mod_rewrite的奇怪行为

时间:2011-08-02 08:47:45

标签: php apache mod-rewrite

我正在尝试执行此类重写

http://sitename/foo/var1/var2 -> http://sitename/foo/index.php?/var1/var2

这是我的.htaccess文件(放在目录foo中):

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]

在我的php脚本中,我显示的是$_SERVER['REDIRECT_QUERY_STRING']$_SERVER['REQUEST_URI']

的值

如果我请求http://sitename/foo/bar之类的网址,则预期的值分别为bar/foo/bar

这也适用于:http://sitename/foo/adminhttp://localhost/foo/bar

但是,当我尝试访问http://localhost/foo/admin(使用localhost而不是sitename)时,REQUEST_URI更改为/admin/?admin(这也是它在地址栏中的显示方式,即http://localhost/foo/admin/?admin)< / p>

我搜索了任何可能存在冲突的.htaccess文件,并在6级启用了mod_rewrite日志记录但无法找到任何信息。

我不知道可能导致它的原因。如果我能知道可能导致这种情况的原因会很棒,否则我可能会切换到nginx。

1 个答案:

答案 0 :(得分:0)

感谢大家的回复。这是一些奇怪的服务器配置错误,我安装的新VM似乎没什么问题。 @Dan Grossman,感谢您关于使用$ _GET的建议,我的一些代码比以前更简单。