我想將所有請求重定向到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。
好吧,問題爲什麼我的CSS沒有加載是因爲我有一個不正確的相對路徑。基本上,我將鏈接標記中的href屬性從href =「style.css」更改爲href =「./ style.css」。但是我還沒有解決我的其他問題,即現有文件仍然顯示在瀏覽器中。 – CookieMonster 2013-03-18 09:00:56
這條規則應該像你所描述的那樣工作。您可能在.htaccess中有其他規則,這些規則在此規則之前。 – 2013-03-18 11:11:18
@OlafDietsche,好吧,當我做http://www.example.com/style.css時,它不起作用。也就是說,CSS文件的內容顯示在我的瀏覽器中。但是,當我做到http://www.example.com/login.php時,它就可以工作。這兩個文件都存在於文檔根目錄中。這是什麼特定於我使用的瀏覽器?我使用Google Chrome。 – CookieMonster 2013-03-18 11:37:51