2014-07-12 29 views
0

我發現了幾個線程有類似的問題,但沒有任何運氣修改答案嘗試和滿足我的網站的要求。我有一個主域名,並重新寫入規則的地方,WWW域名重定向到非www域名,這樣映射:先進的.htaccess mod_rewrite從域到子目錄

primarydoamin.uk => primarydomain.uk 
www.primarydomain.uk => primarydomain.uk 

RewriteCond %{HTTP_HOST} ^primarydomain.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www.primarydomain.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www.primarydomain.uk$ 
RewriteRule ^(.*)$ primarydomain.uk/$1 [R=301,L] 

我有一些對我的主機附加/映射域和我想重寫基於圖案:

  1. 降的「www」
  2. 重寫到主域的子目錄(「」與段替代以破折號‘ - ’)
  3. 只有在執行上述規則時,將www域重定向到非www域的流量不符合,例如:

    www.fishandchips.co.uk => primarydomain.uk/closed/fishandchips-co-uk 
    www.mushypeas.com => primarydomain.uk/closed/mushypeas-com 
    pukkapie.uk => primarydomain.uk/closed/pukkapie-uk 
    

目前我複製並粘貼以下邏輯:

RewriteCond %{HTTP_HOST} ^(www.)?fishandchips.co.uk$ 
RewriteRule ^(.*)$ http://primarydomain.uk/closed/fishandchips-co-uk [R=301,L] 
+0

那麼你試過的東西的例子在哪裏?或者您是否在發佈規範工作? – JakeGould

+0

您無法在內部重定向不同的域名,因此無法正常工作。 – Prix

+0

@Prix已經使用正確的規則 – aidanhammond

回答

0

你的第一套規則就可以恢復爲:

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

對於你的第二套規則,我會嘗試類似於:

# This one will work for domains with single extension like .com 
RewriteCond %{HTTP_HOST} ^www\.([^\.]+)\.([^\.]+)$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^([^\.]+)\.([^\.]+)$ [NC] 
RewriteCond %{HTTP_HOST} !primarydomain.uk$ [NC] 
RewriteRule^http://primarydomain.uk/closed/%1-%2%{REQUEST_URI} [R=302,L] 

# This one will work for domains with 2 extensions like .co.uk 
RewriteCond %{HTTP_HOST} ^www\.([^\.]+)\.([^\.]+)\.([^\.]+)$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^([^\.]+)\.([^\.]+)\.([^\.]+)$ [NC] 
RewriteCond %{HTTP_HOST} !primarydomain.uk$ [NC] 
RewriteRule^http://primarydomain.uk/closed/%1-%2-%3%{REQUEST_URI} [R=302,L] 

末尾的%{REQUEST_URI}將確保它傳遞其來自該域的任何URL。

注意:請記住這是一個未經測試的解決方案。它應該按照預期工作,但它不會考慮多層次的子域,你必須隨時調整它。

而且我已經將它設置爲302,而不是301,使用302,直到確認其完全工作,然後將其移動到301,並且確保你使用的是不同的瀏覽器或清除緩存,以確保你不查看緩存的重定向。

+0

非常感謝您的幫助。該解決方案解決了我在.htaccess文件中嘗試克服的問題。感謝您關於%{REQUEST_URI}的提示 - 我承認我忽視了這些內容。 – aidanhammond

+0

不客氣,有可能是我的方法來縮短,但我選擇使它簡單易讀。 – Prix