2011-04-17 52 views
7

重定向我有兩個域名設置有子域如下...通配符域與WordPress

blog.domain.com 
www.blog.domain.com 

blog.domain.info 
www.blog.domain.info 

兩個域都指向同一服務器上的同一位置,包括WordPress的目錄。 (domain.com/blog)

爲了讓谷歌開心,我想要的一切重定向到這一領域...

blog.domain.com 

這裏是什麼是包含在WordPress目錄下的.htaccess文件裏面.. 。

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

於是我走進我的cPanel,並增加了301域名轉址如下...

blog.domain.info - > blog.domain.com(帶有「www」可選和通配符選擇)。

的cPanel然後自動添加以下相同的.htaccess文件WordPress的下重寫規則...

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

的問題是,通配符部分似乎並沒有工作。

當我去blog.domain.info,預期我重定向到blog.domain.com

但是當我去blog.domain.info/my-post,我根本沒有重定向。

  1. 我該如何解決這個問題?我試過重寫規則,但我所能想到的是WordPress規則正在干涉。

  2. 一旦修復,我可以將這些mod重寫移動到主機帳戶的www root主中的主.htaccess,使它們與WordPress規則分開嗎? 編輯:回答 - 不,他們將無法正常工作,因爲他們是域名停放在根目錄www。

謝謝!

回答

17

看起來我只是不得不在WordPress部分上方移動新規則。我還添加了一個應該從.com域名中刪除'www'的新域名。

這一切似乎工作。

任何意見讚賞。

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^blog.domain.info$ [OR] 
RewriteCond %{HTTP_HOST} ^www.blog.domain.info$ [OR] 
RewriteCond %{HTTP_HOST} ^www.blog.domain.com$ 
RewriteRule ^(.*)$ "http\:\/\/blog\.domain\.com\/$1" [R=301,L] 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

編輯

應當注意的是,如果你在包含在這些WordPress的意見之間的htaccess文件改變任何東西,它可能會由WordPress在稍後的時間覆蓋。將您自定義的編輯移動到此塊之上並且在此塊之上也可以工作,並且不受任何由Wordpress本身製作的對htaccess的更改的影響。

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^blog.domain.info$ [OR] 
RewriteCond %{HTTP_HOST} ^www.blog.domain.info$ [OR] 
RewriteCond %{HTTP_HOST} ^www.blog.domain.com$ 
RewriteRule ^(.*)$ "http\:\/\/blog\.domain\.com\/$1" [R=301,L] 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 
2

我自己對我的網站MethodShop多個領域,包括methodshop.com,methodshop.net等。當做保養,我會分流不同網站之間的流量,所以我的用戶沒有自己的經驗中斷。下面是我使用的htaccess通配符腳本。它需要用戶嘗試訪問的任何URL,並鏡像另一個域上的鏈接。

例如, http://methodshop.NET/games/play/bubblewrap/index.shtml

會重定向到 http://methodshop.COM/games/play/bubblewrap/index.shtml

這裏是爲methodshop.net htaccess的腳本,重寫所有methodshop.net網址methodshop.com。只需編輯它爲您的域。

RewriteEngine on

RewriteRule (.*)$ http://www.methodshop.com\/$1 [R=301,L]

+0

沒有好。您的建議在我的服務器上導致了「太多重定向」錯誤。 「RewriteBase」或「RewriteCond」行在哪裏? – Sparky 2012-10-24 23:06:57