2011-03-19 15 views
0

我在設置htaccess文件時遇到了一些麻煩。目前,我有15個域名服務於他們自己的網站。現在把這個移動到一個單一的網站和域名,我想用301條規則爲舊網址提供一個htaccess。目標網址取決於舊網址的域名。問題設置301重定向語句在htaccess中

E.g.

http://www.previouswebsiteinspanish.com/contacto應永久改寫爲http://www.newcentralwebsite.eu/es/contact

我明白,我必須使用的RewriteCond但我不熟悉不夠用它來得到它的工作。

RewriteCond %{HTTP_REFERER} !^http://(www\.)?previouswebsiteinspanish/.*$ [NC] 
RewriteRule ^([^/.]+)/contacto$ /$1/contact [R=301,L] 

在此先感謝!

回答

0

您目前的情況是,該規則將在引用頁面不在舊域的條件下執行。這很可能不是你想要做的。 :)

您想檢查%{HTTP_HOST}參數,其中只包含當前請求的URL的主機名部分。

假設要重定向對舊域到es子文件夾中的一切,此規則將做到這一點。

RewriteCond %{HTTP_HOST} ^(www\.)?previouswebsiteinspanish.com$ [NC] 
RewriteRule ^(.*)$ http://www.newcentralwebsite.eu/es/$1 [R=301,L] 

然後你必須爲每個舊域添加類似的規則。

+0

OP寫道,他想重定向contacto聯繫 - 所以(。*)將無法正常工作。 – Eliasdx 2011-03-19 10:04:57

0

從你的例子我寫的規則是

RewriteCond %{HTTP_HOST} ^(www\.)?previouswebsiteinspanish\.com$ [NC] 
RewriteRule ^contacto$ http://www.newcentralwebsite.eu/es/contact [R=301,L] 

添加這樣的規則,以你的.htaccess。 你必須爲每個域編寫這樣的規則。

在上面的情況下,你也有URL的變化,所以你可能不得不處理這種特殊情況。

+0

你應該逃脫。在RewriteCond中。 – Eliasdx 2011-03-19 10:07:48

0
RewriteCond %{HTTP_HOST} ^(www\.)?previouswebsiteinspanish\.com$ [NC] 
RewriteRule ^contacto$ http://www.newcentralwebsite.eu/es/contact [R=301,L] 

你需要檢查HTTP_HOST這就是要求網站的主機名。