在我的本地服务器(XAMPP)文件内容.htaccess是:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+?)(/.+)?$ index.php/$1 [L]
在服务器上上传此文件后,我无法再传递参数。我收到了一条消息“找不到档案。”
例如,在本地服务器上,我传递给url: www.foo.com/admin 。 PHP变量$ _SERVER [“PATH_INFO”]等于“admin”
不幸的是在服务器上这不起作用。有人可以解释一下原因吗?
我不想使用此规则#RewriteRule ^([^/.]+?)(/.+)?$ index.php?$1 [L]
。因为那时我无法传递$ _GET参数。 www.foo.com/admin?id=1
答案 0 :(得分:0)
您可以使用此规则
RewriteRule ^(.*)$ index.php?/$1 [L]
它只是说匹配index.php/
[L]
告诉服务器在应用该规则后停止重写
我希望这能解决你的问题!
答案 1 :(得分:0)
(我不会评论^([^/.]+?)(/.+)?$
部分,但我想它可能过于复杂。)
所以,你可以尝试:
↓↓ ↓↓↓
RewriteRule ^([^/.]+?)(/.+)?$ index.php?/$1 [L, QSA]
?
,但添加它会更加兼容。?/$1
,因此应用程序可以更好地确定重写的查询字符串的哪些部分与URL预处理有关。例如,如果您转到example.org/controller?foobar
,则重写的查询字符串将为?/controller&foobar
。