2012-09-25 169 views
0

舉例來說,您目前託管一個網站www.domain.com,您將要將其移至www.new-domain.com。現在,您目前的博客結構是www.domain.com/2012/09/post-name,您的新博客結構將爲www.new-domain.com/blog/post-name。我知道我可以在domain.com上做301永久性重定向指向new-domain.com,但是有沒有辦法捕捉到長尾URL,RegEx是用htaccess重寫的。通常我會做:使用htaccess將深層鏈接URL重定向到新域名

RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/(.*)$ http://domain.com/blog/$3 

如果我需要在同一域內改變URL結構。這個catch還會從舊域重定向嗎?

+0

難道你們就不能只是做:'重寫規則^ $ HTTP(*)://域名.com/$ 1 [L,R = 301]' – David

+0

你可以擴展你的思考過程嗎? –

+0

如果我理解正確,你想要將所有鏈接(甚至是非常深的鏈接)重定向到另一個網站,但是不希望寫出這樣的長比特的麻煩?或者我錯了? – David

回答

1

我假設你已經有兩個域指向相同的目錄,否則詢問從舊域重定向沒有任何意義。

如果您在新的域文檔根目錄上有重定向,您永遠不會看到來自舊域的請求,反之亦然。

如果兩個域共享同一個文檔根,你需要做的檢查對主機:

RewriteEngine On 
RewriteCond %{HTTP_HOST} domain.com$ [NC] 
RewriteRule ^/?[0-9]{4}/[0-9]{2}/(.*)$ http://new-domain.com/blog/$1 [L,R=301] 
+0

域名託管在具有完全不同的DNS區域的不同服務器上。我的問題是這是否甚至是可能的。要將domain.com/year/day/postname重定向到new-domain.com/blog/postname,而不手動重定向每個帖子,執行某種類型的dns重定向,然後使用正則表達式來捕捉尾部...您是正確的它可能沒有道理,這就是爲什麼我問。 –

+1

@RobBennet你有什麼可以做的,或者在這個答案中使用mod_rewrite解決方案。 –

相關問題