关于Thinkphp3.1.2和3.2.3的URL重写

关于Thinkphp3.1.2和3.2.3的URL重写

 2015.8.23  22:34

坑爹啊!坑爹啊!!坑爹啊!!!

经过凡哥一晚上的摸索T T,终于明白了不同版本URL的重写规则!

因为3.2.3版本的目录不同,所以在写URL的时候和3.1.2也不同,正常情况下3.2.3的URL写法例如http://localhost/kengdiea/index.php/Home/Index/index,而对应得3.1.3写法例如http://localhost/kengdiea/index.php/Index/index。重写URL需要添加.htaccess文件,内部代码:

         <IfModulemod_rewrite.c>

               Options+FollowSymlinks

                RewriteEngine On

               RewriteCond %{REQUEST_FILENAME} !-d

               RewriteCond %{REQUEST_FILENAME} !-f

               RewriteRule ^(.*)$ index.php/$1[QSA,PT,L]  //!!!!!!!

         </IfModule>

注意标注的那一行!!!

添加.htaccess文件后,就可重写URL了,可以在URL中省去index.php。3.2.3中新的代码例如:http://localhost/kengdiea/Home/Index/index,注意,3.2.3中不能省去Home!!!而3.1.2中新的代码如:http://localhost/kengdiea/Index/index

而某一次!倒霉的凡哥在网上看到了关于改写3.2.3URL的另外一个办法,那就是在.htaccess文件中,在标注的那一行RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]中index.php后面加上Home,即变为RewriteRule^(.*)$ index.php/Home/$1 [QSA,PT,L],改变之后3.2.3中,完整的URL例如http://localhost/kengdiea/index.php/Home/Index/index,简化地址可以为http://localhost/kengdiea/Index/index,这下省略了Home!!!是不是感觉很厉害!但是!坑爹的来了!加上入口文件index.php使URL为http://localhost/kengdiea/index.php/Index/index却显示无法加载模块Index!!!哥哥我为这个纠结了一晚上!!!后来仔细分析了下http://localhost/kengdiea/index.php/Home/Index/index页面TRACE请求信息才明白了!尼玛!原来是因为RewriteRule ^(.*)$ index.php/Home/$1 [QSA,PT,L]中多加了Home!!!虽然加了Home可以省略URL中的index.php/Home是很方便,但除非个人特别需要,否则本人不建议这样使用,遵循Thinkphp原始法则,保持RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]不变而在URL中乖乖加上Home是比较正规的写法。另外蛮重要的一点是页面TRACE,在配置文件中加上'SHOW_PAGE_TRACE'=>true, 开启页面TRACE分析页面有助于改错。

 

坑爹啊,搞了一晚上,原谅我是个新手,too young too simple…不过终于弄明白了。安心了,T T

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值