经常遇到的一个问题就是,在本地测试环境没有任何问题,但是部署到客户的正式环境后,发现不管输入什么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