漂亮的URL有时用“?”重写有时没有

时间:2011-04-14 21:31:22

标签: apache wordpress codeigniter mod-rewrite friendly-url

我希望有人能回答“为什么”就是这样:

我有时可以使用:

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

然后有时候上面不起作用我必须使用:

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

主要区别在于添加了? ...我通常会看到这种情况发生在不同的系统设置上,fastcgi vs module vs cgi,但是没有做足够的设置来查看模式。

我猜它与apache / setup如何解析path / path_info数据有关。任何想法都会受到欢迎,理想情况下,我想对这是什么以及何时发生这个问题有一个可靠的解释。

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

1 个答案:

答案 0 :(得分:0)

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

基本上,您的第一条规则会将网址"x"重写为目录"x"中的文件index.php,第二条规则会将"x"重写为index.php "x"带参数?var=value&var2=value2的文件。 [(顺便说一句,我不知道如何检索文件中没有名称的变量,通常你使用{{1}}等...)