2011-05-11 66 views
0

結束這是我的.htaccess代碼:的.htaccess mod_rewrite的添加 「/」 到URL

RewriteBase /kajak/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^moduli/([^/]+)/(.*)$ moduli/$1/index.php/$2 [L] 

現在/附加到每個URL。例如,http://127.0.0.1/moduli/novice變成http://127.0.0.1/moduli/novice/

如何防止在最後獲得/

+0

請以更深思熟慮的方式解釋你想要做什麼(或許擴展你的RewriteBase/kajak /和yet/kajak /在你的示例網址中不存在)或者選擇一個答案作爲答案對你的問題。 – cbroughton 2011-05-11 23:42:26

回答

1

雖然我不知道你的問題的答案,但我會注意到你的問題和你的代碼可能與手邊的問題有關的兩個古怪。

  1. 隨着RewriteBase你在你的代碼中,這些規則甚至不應該被觸發。

  2. 雖然我是新來的正規表達式自己,我看([^ /] +),並且對你爲什麼捕獲它有點困惑。我知道^匹配字符串的開始,這將永遠不會是真的,因爲在字符串的實際開始處已經有另一個字符串。

這是說,我可能會寫爲下面的代碼:

RewriteBase /moduli/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)$ $1/index.php/$2 [L] 

這將重寫URL如下:根據您的代碼塊

http://www.website.com/moduli/novice/view 
http://www.website.com/moduli/novice/index.php/view 

,這似乎成爲你想要做的事情。如果不是,那麼我很抱歉。

+0

thx爲您的答案。你的代碼更好,工作正常,但也有同樣的問題。仍然將「/」廣告添加到網址的結尾處。 – senzacionale 2011-05-11 10:57:12

+0

不客氣。如果我的回答是你的問題的答案,請馬克是這樣的。 – cbroughton 2011-05-11 10:59:53

1

我不認爲這與您的重寫規則有關(與它不匹配)。

的/加,因爲當你請求http://example.com/xx/zz和Web服務器檢測zz是一個目錄,這將其轉換爲http://example.com/xx/zz/通過301重定向(瀏覽器發出另一個請求 - 檢查你的Apache日誌)。

閱讀關於尾部斜槓重定向東西here

的,你必須AKS自己,你想要什麼發生時請求的URL爲http://127.0.0.1/moduli/novice/(你希望它是由您的重定向被獲取或不?目前這不是因爲RewriteCond %{REQUEST_FILENAME} !-d逮住)

順便說一下,我不太瞭解你的RewriteBase /kajak/那裏 - 你確定它是正確的嗎?

+0

它是正確的becouse文件夾是kajak。但我認爲cbroughton的代碼就是這樣。是的,我想通過重定向緩存 – senzacionale 2011-05-11 11:11:26