2013-03-18 62 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