我希望有人能回答“为什么”就是这样:
我有时可以使用:
...
RewriteRule ^(.*)$ index.php/$1 [L]
然后有时候上面不起作用我必须使用:
...
RewriteRule ^(.*)$ index.php?/$1 [L]
主要区别在于添加了?
...我通常会看到这种情况发生在不同的系统设置上,fastcgi vs module vs cgi,但是没有做足够的设置来查看模式。
我猜它与apache / setup如何解析path / path_info数据有关。任何想法都会受到欢迎,理想情况下,我想对这是什么以及何时发生这个问题有一个可靠的解释。
在同一个线程上......有时Apache不输出PATH_INFO
环境变量,这可能是导致这种情况的根本原因,但我想知道为什么会这样。
答案 0 :(得分:0)
?是查询字符串开头的标记。
基本上,您的第一条规则会将网址"x"
重写为目录"x"
中的文件index.php
,第二条规则会将"x"
重写为index.php
"x"
带参数?var=value&var2=value2
的文件。 [(顺便说一句,我不知道如何检索文件中没有名称的变量,通常你使用{{1}}等...)