博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】有的时候我们希望url长度越短越好,例如,最初我的博客一篇文章的完整url是http://www.mafutian.net/index.php/home/article/d/id/1.html,这样是不是很长,后来一步一步改成了http://www.mafutian.net/1.html,想知道怎么做到的吗,看看我这篇文章吧。
去掉index.php需要开启Apache的伪静态,打开httpd.conf把LoadModule rewrite_module modules/mod_rewrite.so前面的#去掉,重启Apache服务器,在网站的根目录下创建一个.htaccess文件,里面写路由规则:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
这样访问http://www.mafutian.net/index.php/home/article/d/id/1.html也可以用:http://www.mafutian.net/home/article/d/id/1.html,去掉了index.php,这是apache伪静态实现的。
即去掉默认模块,/home是模块的意思。打开ThinkPHP的配置文件,在里面加入两行:
'DEFAULT_MODULE' => 'Home', // 默认模块
'MODULE_ALLOW_LIST'=>array('Home','Admin'), // 允许访问的模块
这样,访问http://www.mafutian.net/home/article/d/id/1.html就变成了访问http://www.mafutian.net/article/d/id/1.html,这样url又变短了哦。
到目前为止都是改变配置文件,接下来需要在代码上进行修改。
EmptyController.class.php指如果找不到控制器的话,将会调用这个Empty这个控制器,把这个EmptyController.class.php放在默认模块Home模块之中,当我们需要访问http://www.mafutian.net/d/id/1.html的时候,如果找不到d控制器,就会访问Empty这个控制器。当然我们需要把d换成index,d是article控制器中的一个操作,我们把这个操作改成Empty控制器的index操作,这样又少了一步,变成了:http://www.mafutian.net/id/1.html,那么如何去掉id呢,id是参数,想一想如果我们不用参数呢?那是不是可以去掉了,直接使用$_SERVER['REQUEST_URI'],获取URI 用来指定要访问的页面,这样我们一样也能够实现跟id一样的操作。具体怎么实现需要与自己想要实现的功能有关,主要核心就是EmptyController.class.php。如果你在实现过程中遇到什么问题,可以在下面留下评论~我会及时回复。
版权归 马富天博客 所有
本文链接地址:http://www.mafutian.net/83.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶2
踩0