为你的网站构建漂亮的链接

  php , seo , demo

构建搜索引擎喜欢的Url是SEO优化过程中必不可少的意向工作。相对于?后传参的Url,搜索引擎更喜欢漂亮的Url。

那么,什么实际漂亮的Url呢?

/2018/06/20/ru-he-jiang-macshang-de-python3-she-wei-mo-ren-de-python/

/python/ru-he-jiang-macshang-de-python3-she-wei-mo-ren-de-python/

以上这种都算是漂亮链接。可以看出来,漂亮的Url是有好几种规则的。如果能够让用户自由组合自己的规则,那该多好呀。

需求如下:

用户可以根据预设的Url标签来自定义Url规则。设置好后信息可以根据设置的Url动态生成。

以下是用 PHP 实现的美化Url的核心类。

<?php
$json = '{"_id":"5971a4b7a4419d109d347fd5","title": "为何BAT有10亿用户,却没有多少粉丝?","category":"互联网产品","addtime": "1529473923"}';
$data = json_decode($json, true);
echo '/' . PermaLink::generator($url, $data);

/**
 * 根据Url标签结构动态生产Url
 */
class PermaLink
{
    /**
     * Url格式
     * @var [type]
     */
    private static $_url;

    /**
     * 根据Url格式生成真实的Url
     * @author liqiming
     * @date   2018-06-20
     * @param  string     $url  Url格式
     * @return string
     */
    public static function generator($url, $data)
    {
        self::$_url = $url;
        $data       = self::_formatData($data);
        if ($varsOne = self::_extratVars(1)) {
            $varsZero = self::_extratVars();
            foreach ($varsOne as $i => $varname) {
                $url = str_replace($varsZero[$i], sprintf('%s', $data[$varname]), $url);
            }
        }
        return $url;
    }

    /**
     * 从Url中提取变量
     *
     * @author liqiming
     * @date   2018-06-20
     * @param  integer    $index 数组索引,只能是0或1
     * @return array
     */
    private static function _extratVars($index = 0)
    {
        if (preg_match_all("/%(.*?)%/", self::$_url, $m)) {
            foreach ($m[$index] as &$value) {
                $value = trim($value); //去掉标签变量两边的空格
            }
            return $m[$index];
        }
    }

    /**
     * 将数据对应到标签变量上
     *
     * @author liqiming
     * @date   2018-06-20
     * @param  array     $array 数据
     * @return array
     */
    private static function _formatData($array)
    {
        if ($vars = self::_extratVars(1)) {
            foreach ($vars as $value) {
                switch ($value) {
                    case 'id';
                        $data['id'] = $array['_id'];
                        break;

                    case 'title':
                        $data['title'] = $array['title'];
                        break;

                    case 'category':
                        $data['category'] = $array['category'];
                        break;

                    case 'year':
                        $data['year'] = date("Y", $array['addtime']);
                        break;

                    case 'month':
                        $data['month'] = date("m", $array['addtime']);
                        break;

                    case 'day':
                        $data['day'] = date("d", $array['addtime']);
                        break;

                    default:
                        $data[$value] = $value;
                        break;
                }
            }
        }
        return $data;
    }
}

用户交互界面如下。

Url生成界面

上面预设了6个标签,点击按钮可以自定义组合Url,数据根据设置好的Url格式动态的生成具体的Url。


本文作者: 江边望海
本文链接: https://www.jiangbianwanghai.com/2018/06/20/use-PHP-to-create-beautiful-link/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!