所以,最近我一直在处理一个与 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
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 的大师,所以如果你发现我写的任何东西有任何错误,请随时告诉我。