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

学习笔记 马富天 2016-05-02 10:38:53 77 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。如果你在实现过程中遇到什么问题,可以在下面留下评论~我会及时回复。

版权归 马富天PHP博客 所有

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

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

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

2

0

上一篇《 jQuery精美的折叠式菜单栏 》 下一篇《 PHP自带函数filter_var()验证邮箱、url和IP地址 》
分享到:

所有评论

  1. 首页
  2. 上一页
  3. 1
  4. 下一页
  5. 尾页
  6. 第1页
  7. 每页12条
  8. 共1页
  9. 共2条
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码