时间:2014-02-15所属栏目: PHP/PHP框架 来源: 未知 热度:
需求场景
各人都传闻过伪静态有利于SEO,很天然的想到ThinkPHP的URL伪静态成果,虽然这只是一个引子。
真正蛋疼的需求来了,当你要为自已的站点增进一个网站舆图链接的时辰,如:
http://www.a.com/index.php/Sitemap/index
通过潜匿index.php之后URL酿成了这样
http://www.a.com/Sitemap/index
由于ThinkPHP支持默认操纵,URL再简化一点
http://www.a.com/Sitemap
加上伪静态
http://www.com/Sitemap.html
这时辰各人会说,网站舆图不是要求xml后序吗?谷歌还好措辞,没要求必然要xml后序,真正蛋疼的是百度sitemap,名目划定是
http://[域名]/sitemap.xml
没有后序不可,此外后序照旧不可,这点让许多用开源体系建站的站长切齿腐心。
貌似扯得有点远了,咱回题,刚提到ThinkPHP支持伪静态,直接把URL_HTML_SUFFIX参数设置成.xml不就完事了吗?没错,这样是可以让网站舆图链接正常了,也匹配了百度sitemap的蛋疼要求。
然则一个站点满是xml后序,不认为有点怪怪的吗?如
http://www.a.com/Index/index.xml
这样轻易让用户发外行误,也轻易让搜刮引擎误会(我猜的),这肯定不是一个明智的选择。
这时辰有人要举手发问了吧,ThinkPHP3.0不是支持Restful模式吗?没错,不外我们没须要用大炮去打蚊子(最近出格喜好嗣魅这话)。
那么ThinkPHP支持多伪静态设置吗?官方手册没有明晰暗示支持。
办理方案
看了一下焦点中Dispatcher.class.php的代码,第104行:
$_SERVER['PATH_INFO'] = preg_replace('/\.'.trim(C('URL_HTML_SUFFIX'),'.').'$/i', '', $_SERVER['PATH_INFO']);
相识到ThinkPHP伪静态实现的道理是基于正则替代,把URL_HTML_SUFFIX设置的内容通过正则替代为空。
这时辰各人应该能想到怎样实现多伪静态支持了吧?
'URL_HTML_SUFFIX'=>'(html|xml)',
这样会见以下三个毗连着实是沟通的一个内容
http://www.a.com/Sitemap http://www.a.com/Sitemap.html http://www.a.com/Sitemap.xml
团结ThinkPHP3.0版本的U函数一路行使,你会发明更多惊喜哦!
标签:thinkphp, thinkphp3.0, URL_HTML_SUFFIX, 伪静态