空间不支持Thinkphp的PATHINFO处理

经常遇到的一个问题就是,在本地测试环境没有任何问题,但是部署到客户的正式环境后,发现不管输入什么URL地址,访问的永远都是首页(也就是默认模块的默认操作),这个时候,第一感觉就是要查看空间是否支持PATHINFO。
由于开发工作基本完成,这个时候再去改变URL地址的话,模板工作量会比较大。例如,可能需要把所有的类似

http://serverName/index.php/User/add

这样的URL地址改成

http://serverName/index.php?m=User&a=add

如果你的模板里面没有使用U方法统一生成URL的话,这个工作量随着模板文件的多少会有成倍的增长。

在这样的情况下面,最安全的方式,其实是调整URL模式,只需要做两步操作即可:
1、在项目配置文件里面设置:’URL_MODEL’=>3
2、清空模板缓存目录(通常默认是项目的Runtime/Cache/)

这样设置后,系统的模板文件无需做任何更改,例如原来的模板里面的连接地址是
__URL__/add 或者 __APP__/User/add 这样的话,系统生成的链接
会自动变成

http://serverName/index.php?s=/User/add

经过这样的更改之后,大部分主机环境,包括国外的主机均可支持。

如果主机空间支持REWRITE和.htaccess文件,还可以进一步处理URL
修改你的.htaccess文件为:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?s=$1 [QSA,PT,L]

经过这一步的处理后,那么你的URL仍然可以变回:

http://serverName/index.php/User/add

或者是

http://serverName/User/add/

关于在IIS下面使用Rewrite可以参考:
Apache与IIS,URL重写机制的不同及REQUEST_URI

affiliate_link
Share this Post:
Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

Comments are closed.