我正在尝试执行此类重写
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/admin
和http://localhost/foo/bar
。
但是,当我尝试访问http://localhost/foo/admin
(使用localhost而不是sitename)时,REQUEST_URI更改为/admin/?admin
(这也是它在地址栏中的显示方式,即http://localhost/foo/admin/?admin
)< / p>
我搜索了任何可能存在冲突的.htaccess文件,并在6级启用了mod_rewrite日志记录但无法找到任何信息。
我不知道可能导致它的原因。如果我能知道可能导致这种情况的原因会很棒,否则我可能会切换到nginx。
答案 0 :(得分:0)
感谢大家的回复。这是一些奇怪的服务器配置错误,我安装的新VM似乎没什么问题。 @Dan Grossman,感谢您关于使用$ _GET的建议,我的一些代码比以前更简单。