2013-09-27 53 views
2

我將www.domain.com上的主站點和blog.domain.com上的舊wordpress博客合併爲一個全新的WordPress的安裝。我導出並導入了所有舊博客文章,以便他們現在生活在wwww.domain.com/blog//嘗試將blog.domain.com重定向到www.domain.com/blog/

我試圖創建一個將所有舊博客帖子映射到其新URL的重寫規則。

我試過的變化對這些所謂的討論: DNS/.htaccess files to redirect subdomain to specific folder Apache rewrite rule different if capture is empty

,但沒有什麼工作。

在我的.htaccess中會重定向到blog.domain.com www.domain.com/blog,如果在URL罷了:

RewriteCond %{HTTP_HOST} ^blog\.domain\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www\.blog\.domain\.com$ [NC] 
RewriteRule ^/?$ http://www.domain.com/blog/$1 [R=301,L] 

,但如果有什麼更該URL,它根本不重寫URL,並轉到新的Wordpress網站的404頁面。

我嘗試添加一個捕獲到最後重寫規則線,但隨後沒有發生重寫,它只是進入到新的主頁,但地址欄仍顯示爲「blog.domain.com」:

RewriteCond %{HTTP_HOST} ^blog\.domain\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www\.blog\.domain\.com$ [NC] 
RewriteRule ^/(.+)$ http://www.domain.com/blog/$1 [R=301,L] 

有沒有辦法做我想做的事情?

回答

2

你要刪除的斜線:

RewriteCond %{HTTP_HOST} ^blog\.domain\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www\.blog\.domain\.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/blog/$1 [R=301,L] 
# no slash---^ 

,使+一個*。通過htaccess文件中的規則發送的URI具有前導斜槓,因此^/(.+)$永遠不會匹配。

+0

哇。 2個正確的答案在同一時間。在我看到這些答案之前,我實際上做了最後一次搜索並找到了類似Jon Lin右邊的解決方案。如果可以的話,我會接受他們。 –

2

替換您的規則是:

RewriteCond %{HTTP_HOST} ^(www\.)?blog\.domain\.com$ [NC] 
RewriteRule^http://www.domain.com/blog%{REQUEST_URI} [R=301,L] 

PS:確保這是你的.htaccess的第一個規則。

相關問題