2010-01-18 127 views
4

我問這個問題的補充的排序之前:URL重寫(改變URL地址欄)

Mod_rewrite invisibly: works when target is a file, not when it's a directory

現在,其實我是想改寫到明顯的情況發生,因爲我已經打開的URL方案,雖然我想老鏈接的工作,我希望用戶看到新的URL方案。

所以此工程

RewriteRule ^oldscheme/(.*)/?$ newscheme/$1 

但在地址欄中的網址仍然是http://example.com/oldscheme/foo

怎樣做一個可見重寫以正確的方式,最好只是mod_rewrite的,而不是一些缺憾與位置重定向或諸如此類?

回答

6

正如我現在不能發表評論,我會在這裏發佈我除了伊格納西奧的評論。

實際上,你應該發表一個301(永久移動)重定向,因爲你描述有一個新的站點的目錄結構。所以你的重寫規則應該是

RewriteRule ^oldscheme/(.*)/?$ newscheme/$1 [R=301] 
4

原來增加了「重定向」碼開了竅:

RewriteRule ^oldscheme/(.*)/?$ newscheme/$1 [R] 

明顯回想起來,但希望這使得答案更多的搜索。 我發現它在這個優秀的「小抄」:

http://www.addedbytes.com/cheat-sheets/mod_rewrite-cheat-sheet/

+0

如果我是正確的,[R]參數'強制'重寫URL。 – Ropstah 2010-01-18 18:52:04

+0

它導致的與'Location'頭沿302的響應代碼被髮送到瀏覽器。如果沒有它,只有內部的httpd結構如果可能的話修改。 – 2010-01-18 19:02:17