我想将所有请求重定向到 index.php,并且任何 %{REQUEST_URI} 部分都应该作为参数传递给 index.php。此外,即使 %{REQUEST_URI} 部分指向现有文件/目录,我仍然想做重定向。例如,js
在我的文档根目录中有一个目录。当我访问我的网站时http://www.example.com/js
,我仍然想重定向到http://www.example.com/index.php?uri=js
而不是在浏览器中显示目录的内容。
因此,我在 .htaccess 文件中添加了以下两行。
RewriteEngine On
RewriteRule .* index.php?uri=%{REQUEST_URI} [QSA]
但这不起作用。
首先,当我指定一个现有文件的路径时,例如http://www.example.com/foo.css
,它仍然在浏览器中显示文件的内容。(我想要的是http://www.example.com/index.php?uri=foo.css
)其次,当访问一个目录时,例如http://www.example.com/js
,然后重定向发生,但 css 未能生效,我的网站看起来已损坏。
好消息是,如果我指定一个不指向根目录中任何文件/目录的任意字符串,它就可以正常工作。我花了几个小时试图调试它,但我不知道。我将如何解决我的问题?
仅供参考,我使用的是 Apache 2.4.3。