这里我有.htaccess文件:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [QSA,L]
重写是有效的,但是当我尝试http://site.com/example时,我的index.php中没有path_info。
我对此主题https://stackoverflow.com/questions/1442854/codeigniter-problem-with-mod-rewrite-on-apache-1-3有所了解,但它并没有解决我的问题。
所以,这个问题只发生在apache 1.3上(在2.0上都可以),我想知道原因。遗憾的是,我无法访问httpd.conf(
请帮帮我。
答案 0 :(得分:3)
尝试将重写规则更改为:
RewriteRule (.*) index.php [QSA,L,E=PATH_INFO:/$1]
答案 1 :(得分:1)
这与mod_negotiation
相关,并且可以/index.php
作为/index
访问(不含扩展名)。
解决方案:
a2dismod negotiation
service apache2 restart
答案 2 :(得分:0)
PATH_INFO
是真正的CGI可执行文件/ PHP脚本文件名之后的虚拟路径后缀
您需要传递一个才能看到它:
RewriteRule (.*) index.php/$1 [QSA,L]
请注意,您还可能需要先启用该选项:http://httpd.apache.org/docs/2.2/mod/core.html#acceptpathinfo
AcceptPathInfo On
然后根据PHP SAPI,您可能必须配置php.ini,关于--cgi-force-redirect
设置(旨在避免某些设置的PATH_INFO漏洞利用)。 http://php.net/manual/en/security.cgi-bin.php