2017-09-05 88 views
1

我有兩個域名指向同一臺服務器,並被名稱服務器接受。我的主機稱這是一個域別名。一個較老的WordPress博客olddomain.com託管了一個博客,而一個較新的域名newdomain.com現在託管了一個經過更新的博客和一個投資組合網站。重定向舊的主頁流量,但通過博客文章:WordPress&htaccess

我的客戶想要捕捉他的舊博客流量並允許這些流量通過。這一切都工作正常,因爲域別名。換句話說,沒有我做任何事情到.htaccess文件,該內部重定向已經發生的情況:

http://olddomain.com/year/month/day/post-slug/已重定向到: http://newdomain.com/year/month/day/post-slug/

的問題是,我們還需要將olddomain.com網頁流量重定向到新博客的着陸頁。舊網站的主頁是博客,但新網站的主頁是個人投資組合。因此,我需要的htaccess做的是:

  • 由域名服務器保留當前域名通過如上所述,並提出可能和我的主機域別名設置
  • 接招的目的是爲任何流量舊的主頁,並重定向到新博客的着陸頁,它看起來像這樣:

olddomain.com(nothing else here)需要重定向到newdomain.com/blog/(nothing else here)

的問題,我有是,任何解決方案,我用自己的博客文章本身的重定向進行上述重定向混亂。我不能完全達到我可以同時擁有兩個角色的地步。 htaccess還需要保留爲index.php文件重寫的標準WordPress塊。

這是我目前所做的,它將olddomain.com重寫爲newdomain.com/blog/,但會將所有其他舊流量發送回主頁,而不是允許內部域別名重定向發生。

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} (www.)?olddomain.com [NC] 
RewriteRule ^(.*)$ http://newdomain.com/blog/ [R=302,L] 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

謝謝。

回答

1

你可以用這些規則替換現有的代碼:來自新的瀏覽器或清除瀏覽器緩存後

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

# redirect only landing page to new site's /blog/ URI 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+[?\s] 
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC] 
RewriteRule ^/?$ http://newdomain.com/blog/ [R=307,NE,L] 

RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

</IfModule> 

測試它。

+0

關閉,讓我得到我想要的基準級重定向。但是現在請求了一些像'/ year/month/day/post-slug /'一樣的舊博客文章,因爲REQUEST_URI也會重定向到'/ blog /'。 –

+0

我很猶豫說它已經工作了,因爲我之前看到它假冒我(瀏覽器/ DNS緩存)。我今天會繼續檢查,但看起來很有希望。非常感謝你。一旦我可以驗證,我會投票。 –

+1

非常好,非常感謝。由多人驗證,它按照我的意圖工作。 –

相關問題