这样一个连接,我希望使用index.php作为单一入口来进行解析。当php作为Apache的module时没有问题。但是当在CGI模式下,php会将/shop/hat看成路径和文件名,直接访问,从而产生http 404 错误。
google上没有找到合适的资料,请各位大牛帮忙看看。
问题解决马上散分。
谢谢。
我估计是php.in的配置问题,也可能是apache的.htaccess的配置不对,请指点。
不是吧?
http://www.xx.com/shop/hat
当php作为Apache的module时 也会当路径解释的!
至少需要
http://www.xx.com/index.php/shop/hat
或
http://www.xx.com/index/shop/hat
除非你存在shop.*的文件
感谢你的回复。
原来在module下http://www.xx.com/shop/hat是可以的,后来服务器升级,从module模式转变为CGI模式,就不行了。
有没有办法让所有的url都被index.php处理,但是不必写成.../index.php?a=shop&b=hat
检查 PATH_INFO 是否被启用,apahe2默认不启用
谢谢回复。
PATH_INFO是php.ini的配置项吗?我只找到了 cgi.fix_pathinfo。 将 cgi.fix_pathinfo设为1后仍然不行。
httpd.conf
UseCanonicalName On -> Off
非常感谢。
我搜索了一下,发现以下说明:
AcceptPathInfo指令的三个参数为:
off
仅当一个请求映射到一个真实存在的路径时,它才会被接受。这样,如上述/test/here.html/more这样的在真实文件名后跟随一个路径名的请求将会返回一个404 NOT FOUND错误。
on
如果前面的路径映射到一个真实存在的文件,此请求将被接受。如果/test/here.html映射着一个有效的文件,上例中/test/here.html/more这个请求就会被接受。
default
对于附加路径名的请求的处理方式由其对应的处理器来决定。对应普通文本的核心处理器默认会拒绝PATH_INFO。而用于伺服脚本的处理器,比如cgi-script和isapi-isa,默认会接受PATH_INFO。
如果将其置为off,还是不能保证用index.php来处理http://www.xx.com/shop/hat这样的url吧。在index.php中有对url进行解析和映射到真实脚本的语句,现在需要保证任何url都会被index.php处理。
服务器在国外,因此不能马上测试。我会尽快测试,同时请您继续对我上面的看法发表意见和建议。
谢谢。
resolved! Cheers :)
http://bugs.php.net/bug.php?id=23800
Change cgi.fix_pathinfo to 0. What a supprise!
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 遇到 难题 模式 过来 作为 高手 一个 路径 请求 文件 |
注册
个人空间
