马富天博客

ThinkPHP如何把目录长度缩为最少。

学习笔记 马富天 2016-05-02 10:38:53 36 2

【摘要】有的时候我们希望url长度越短越好,例如,最初我的博客一篇文章的完整url是http://www.mafutian.net/index.php/home/article/d/id/1.html,这样是不是很长,后来一步一步改成了http://www.mafutian.net/1.html,想知道怎么做到的吗,看看我这篇文章吧。

去掉index.php

去掉index.php需要开启Apache的伪静态,打开httpd.conf把LoadModule rewrite_module modules/mod_rewrite.so前面的#去掉,重启Apache服务器,在网站的根目录下创建一个.htaccess文件,里面写路由规则:

  1. <IfModule mod_rewrite.c>
  2. 	RewriteEngine on	
  3. 	RewriteCond %{REQUEST_FILENAME} !-d
  4. 	RewriteCond %{REQUEST_FILENAME} !-f
  5. 	RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
  6.  </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

即去掉默认模块,/home是模块的意思。打开ThinkPHP的配置文件,在里面加入两行:

  1. 'DEFAULT_MODULE'       =>    'Home',  // 默认模块
  2. '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

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。如果你在实现过程中遇到什么问题,可以在下面留下评论~我会及时回复。

版权归 马富天博客 所有

本文标题:《ThinkPHP如何把目录长度缩为最少。》

本文链接地址:http://www.mafutian.net/83.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

2

0

上一篇《 jQuery精美的折叠式菜单栏 》 下一篇《 PHP自带函数filter_var()验证邮箱、url和IP地址 》
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码