【发布时间】:2012-11-18 05:39:33
【问题描述】:
所以,最近我一直在处理与 mod_rewrite 相关的问题,似乎没有人尝试做类似的事情。人们遇到的每个问题都是关于尝试从重写中排除目录,而我希望它们像其他任何目录一样包含。
例如,假设我的根目录中包含 .htaccess 文件是www.example.com/root/
当我输入组合目录(例如 www.example.com/root/asdfasdf)时,我将 .htaccess 文件设置为将我重定向到 www.example.com/root/index.php?url=asdfasdf,而无需更改浏览器地址栏中的内容
但是,在尝试对 真实 目录(例如 www.example.com/root/admin)执行相同操作时,它不仅会更改地址栏中的 url,还会将其更改为 www.example.com/root/admin/?url=admin。
谁能向我解释发生了什么事。我已经尝试了各种不同的正则表达式和标志,而重定向任何东西的那些仍然会导致同样的问题。我可以转到www.example.com/root/admin 并仍然被重定向到根文件夹,同时隐藏查询字符串为?url=admin。
[更新:附加信息 11-30-2012]
就像我说的那样,我已经尝试过它会使用多行不同的代码并得出完全相同的重定向问题,前提是重定向不会完全失败并产生 500 错误。不过,这是我最新的迭代之一,它产生了不能忽略目录的问题。
RewriteEngine On
RewriteBase /root/
RewriteCond %{REQUEST_FILENAME} !^(.\*\\.("png"|"jpg"|"gif") [NC]
RewriteRule (.\*?) index.php?url=$1 [QSA]
重写条件是在请求图片时阻止引擎重写(对于 css 和 img 标签)。我只是之前没有提到它,因为我尝试删除该行并且它没有任何区别。
不过,我并不是 mod_rewrite 的大师,所以如果您发现我写的任何内容有任何错误,请随时告诉我。
【问题讨论】:
标签: mod-rewrite query-string directory