2011-04-14 67 views
3

我希望有人能回答“为什么”这样的话:漂亮的URL有时用“?”重写有时没有

有次我可以使用:

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

,然后有次以上,其中不工作,我必须使用方法:

... 
RewriteRule ^(.*)$ index.php?/$1 [L] 

主要区别是加入的? ...我一般看到这种情况发生在不同的系统设置,FastCGI的VS模块VS CGI,但做得还不够设置看到的格局。

我猜测它与apache/setup如何解析path/path_info数据有关。任何想法都会受到欢迎,理想情况下,我希望对此发生的原因以及发生的原因有一个明确的解释。

在同一个线程...有时Apache不输出PATH_INFO环境变量这可能是这个的根本原因,但我想知道这是为什么。

+1

可能受'AcceptPathInfo' apache配置选项支配。 – 2011-04-14 21:50:13

+0

我用'AcceptPathInfo'玩过,但它似乎没有影响任何东西,至少它看起来是这样。 – farinspace 2011-04-14 22:13:44

+0

你说的是wordpress或codeigniter或两者?因为他们都实现了自己的路由规则。 – 2011-04-14 22:28:08

回答

0

The?是查询字符串开头的标记。

所以基本上你的第一条规则重写URL "x"到一个文件"x"目录index.php,第二重写URL "x"index.php文件与参数"x"。 [(顺便说一句,我不知道如何检索文件中没有名字的变量,通常你使用?var=value&var2=value2等等......)