2013-12-10 43 views
0

我有一個.htaccess文件如下.htaccess的問題

RewriteEngine On 
RewriteBase /site/ 
RewriteCond %{REQUEST_FILENAME}> !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
RewriteRule ^(.*)/$ $1 [R=301,L] 

它工作正常,作爲一個MVC但是如果我在存在如的index.php文件名輸入,並用「/」,如指數結束吧.php/- 瀏覽器感到困惑,並且呈現數據和樣式錯誤。並點擊每個鏈接然後被路由到 「index.php/clicked-link.watever」

有人可以請解釋爲什麼它這樣做,以及如何防止這種情況。

+0

多數民衆贊成在瀏覽器假設如何行爲。你所有的方法都必須根據你的htaccess文件設置來更新你的鏈接。 –

+0

感謝所有的答覆,我將測試他們! – user3088622

回答

0

您可以使用絕對路徑如:

<a href="http://www.example.com/clicked-link.watever" 
    <link type="text/css" src="http://www.example.com/css/style.css" 

,而不是相對URL如:

<a href="clicked-link.watever" 
    <link type="text/css" src="/css/style.css" 

的絕對URL將指向某個頁面或地址,並且不關心的相對位置的當前頁面。如果這是有道理的

0

顛倒規則的順序否則最後的規則永遠不會執行,因爲你的第一條規則是捕獲所有規則。

RewriteEngine On 
RewriteBase /site/ 

RewriteRule ^(.*)/$ $1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME}> !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]