22、ThinkPHP的URL路由配置实现超简短路径实现方法

阅读() @2018-10-29 18:16:09

有的网站需要做SEO优化,对路径的要求很高,必须得简短,方便用户记忆而且便于搜索引擎收录,下面来说下ThinkPHP通过路由配置实现超简短路径的方法。

第一步:在公共config配置文件中添加如下代码:

/* 路由的配置config代码必须放在公共config文件中(如果是使用分组的话) */
//配置URL路由
'URL_ROUTER_ON' => true,
//路由规则
'URL_ROUTE_RULES' => array(
    //'list/:id' => 'Index/List/index',//普通配置方法
    '/^list_(\d+)$/' => 'Index/List/index?id=:1',//正则路由
    //'article/:id\d' => 'Index/Article/index'
    '/^article_(\d+)$/' => 'Index/Article/index?id=:1'
)

第二步:通过文章和栏目id添加url地址:

<?php
    import('TagLib');
    class TagLibZym extends TagLib{
        protected $tags = array(
            'nav' => array('attr'=>'order,limit', 'close'=>1)
        );
        public function _nav($attr, $content){
            $attr = $this->parseXmlAttr($attr);
            $order = $attr['order'];
            $limit = $attr['limit'];
            $str = <<<str
                <?php 
                    \$cate = M('cate')->query("select * from ".C('DB_PREFIX')."cate order by $order limit $limit");
                     import('Class.Classify', APP_PATH);
                     \$cate = Classify::cateParts(\$cate);   
                     foreach(\$cate as \$v){
                        \$url = U('/list_' . \$v['id']);//url地址
               ?>        
str;
            $str .= $content;
            $str .= '<?php } ?>';
            return $str;
        }
    }

第三步:将config文件中的URL_MODEL的值改为1;

第四步:在前端进行调用:

<div class="nav">
	<ul>
		<nav order="id desc" limit="100">
			<li>
				<a href="{$url}">{$v['cname']}</a>
				<ul>
					<if condition="$v['child']">
						<foreach name="v['child']" item="second">
							<li>
								<a href="{:U('/list_'.$second['id'])}">{$second['cname']}</a>
								<if condition="$second['child']">
									<foreach name="second['child']" item="third">
										<li>
											<a href="{:U('/article_'.$third['id'])}">{$third['cname']}</a>
										</li>
									</foreach>
								</if>
							</li>
						</foreach>
					</if>
				</ul>
			</li>
		</nav>
	</ul>
</div>

完成!

微信二维码
锐壳主机