2011-10-06 67 views
3

我使用下面的mod_rewrite從我的網站的頂級目錄重定向到子目錄shows/mod_rewrite並重定向瀏覽器,而不是改寫

Options +FollowSymlinks 
RewriteEngine On 
RewriteRule ^$ shows [L] 

重定向正在執行的罰款。但是,URL是顯示的重定向,我相信它不應該使用mod_rewrite。

澄清:指向http://www.example.com/的瀏覽器被重定向到子目錄shows/。但瀏覽器在URL中顯示重定向爲http://www.example.com/shows/。同樣,我的理解是,通過使用mod-rewrite,您可以使重定向不可見,因此用戶不知道發生了重定向。

我做錯了什麼?

回答

5

我現在看到了這個問題。您正在將網址從http://www.example.com/改寫爲http://www.example.com/shows。由於/shows是目錄而不是文件,Apache在重寫後發送尾部斜槓重定向。這裏是你如何解決這個問題:

RewriteRule ^$ shows/ [L] 
# here -------------^ 

注:因爲Apache可能已經發出了301永久頭前面感動,瀏覽器會緩存此響應,它可能告訴你錯誤的頁面/內容即使您更改你的.htaccess文件。經常在測試時清除瀏覽器緩存。

+0

Naaay說沒有。它完全改變了被認爲是根文件夾的內容。頁面上的所有鏈接文件都沒有鏈接。感謝您的嘗試。 – stefmikhail

+0

它在我的系統上按預期工作:'localhost /'顯示來自'localhost/shows /'的內容,沒有301重定向或地址欄中的地址改變。至於斷開的鏈接:你應該期待他們並找到解決辦法。 –

+0

我沒有構建網站,並且所有內容都相對於根目錄進行了鏈接,因此,如果更改所考慮的根目錄,則需要做更多工作來解決此問題。我可以看到重定向到的目錄。 – stefmikhail

0

很久以前我很想知道,所以我決定搜索谷歌,我發現你的問題。我意識到,有兩個選項「重定向」和「重映射」。所以我認爲這是瞭解你所問的關鍵。基本上有兩種選擇

重定向而不更改URL

RewriteEngine on 
RewriteRule ^/foo\.html$ /bar.html [PT] 

&和重定向改變瀏覽器的URL。

RewriteEngine on 
RewriteRule ^/foo\.html$ bar.html [R] 

反正這裏看看 http://httpd.apache.org/docs/2.2/rewrite/remapping.html