2011-12-13 47 views
3

在这里我有一个.htaccess文件:

Options +FollowSymLinks 

RewriteEngine on 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .* index.php [QSA,L] 

和重写的作品,但没有PATH_INFO在我的index.php当我试图http://site.com/example

我有这个红色的话题https://stackoverflow.com/questions/1442854/codeigniter-problem-with-mod-rewrite-on-apache-1-3但它并没有解决我的问题。

所以,这个问题只发生在Apache 1.3上(2.0都可以),我想知道为什么。我也很遗憾不得不httpd.conf文件(没有访问

请帮我

+0

如果您`的var_dump($ _ SERVER);`,不包含任何你想要什么?特别是`$ _SERVER ['REQUEST_URI']`包含什么? – DaveRandom 2011-12-13 23:04:24

+0

是的,有REQUEST_URI,我建立了自己的路径信息。但我只是想实现其他决定。 – 2011-12-14 16:03:18

回答

2

试着改变你的重写规则:

RewriteRule (.*) index.php [QSA,L,E=PATH_INFO:/$1] 
+0

不起作用,崩溃服务器 – 2011-12-14 16:06:10

0

PATH_INFO是真正的CGI可执行文件后,虚拟路径后缀。/ PHP脚本文件名
你需要传递一个看到它:

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

请注意,您可能还requi重新选择首先要启用: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

1

这与mod_negotiation有关并且能够访问/index.php作为/index(不带扩展名)。

解决方案:

a2dismod negotiation 

service apache2 restart