2013-03-18 42 views
0

我想将所有请求重定向到index.php,任何%{REQUEST_URI}部分应作为参数传递给index.php。另外,即使%{REQUEST_URI}部分指向一个现有的文件/目录,我仍然想要重定向。例如,在我的文档根目录中有一个名为js的目录。当我像http://www.example.com/js那样访问我的网站时,我仍然想要重定向到http://www.example.com/index.php?uri=js而不是在浏览器中显示目录的内容。mod_rewrite不会触发css加载

所以,我在我的.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。

+0

好吧,问题为什么我的CSS没有加载是因为我有一个不正确的相对路径。基本上,我将链接标记中的href属性从href =“style.css”更改为href =“./ style.css”。但是我还没有解决我的其他问题,即现有文件仍然显示在浏览器中。 – CookieMonster 2013-03-18 09:00:56

+0

这条规则应该像你所描述的那样工作。您可能在.htaccess中有其他规则,这些规则在此规则之前。 – 2013-03-18 11:11:18

+0

@OlafDietsche,好吧,当我做http://www.example.com/style.css时,它不起作用。也就是说,CSS文件的内容显示在我的浏览器中。但是,当我做到http://www.example.com/login.php时,它就可以工作。这两个文件都存在于文档根目录中。这是什么特定于我使用的浏览器?我使用Google Chrome。 – CookieMonster 2013-03-18 11:37:51

回答

0

这也许下面的代码:

RewriteEngine On 
RewriteRule ^index.php?uri=(.*)$ $1 [L] 

我不知道这是否是你想要的。

+0

这将无法正常工作,检查了这一点http://stackoverflow.com/questions/15411898/mod-rewrite-regex-not-working-apache/15411957#15411957 – vmeln 2013-03-18 09:40:33

+0

@LucasWillems,是的,它没有工作。我解决了我的问题。请参阅我的问题下的评论。 – CookieMonster 2013-03-20 10:07:55

相关问题