2012-03-23 58 views
1

我強迫URL變化,如果用戶已經通過http://mysitehttp://www.mysite重寫條件檢查,如果沒有兩個網址

訪問的網站不過目前我只檢查該網站不等於主子域名,其是http://store

我也有另外一個子域名,但這個被覆蓋一樣,所以我需要改變我當前的代碼的工作方式是:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^store\.mysite\.com [NC] 
RewriteRule (.*) http://store.mysite.com/$1 [R=301,L] 

我寧願它檢查網址是其中之一:

http://mysite.com 
http://www.mysite.com 

...然後應用重寫規則,如何更改我的重寫條件來執行此操作?

回答

4

嘗試這一個 - 工作得很好這裏:

RewriteCond %{HTTP_HOST} ^(mysite\.com|www\.mysite\.com)$ [NC] 
RewriteRule .* http://store.mysite.com%{REQUEST_URI} [R=301,L] 
  • 在這裏,我已經把使用正則表達式模式在單一條件二級域名。
  • 我也修改了RewriteRule(我喜歡這樣做)。
  • 您可能還想在此添加QSA標誌,因爲它是301重定向(取決於您的實際網址) - [R=301,QSA,L]

其它方法:

1)爲每個域名的獨立條件(需要指定OR邏輯需要被用來代替默認AND):

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC] 
RewriteRule .* http://store.mysite.com%{REQUEST_URI} [R=301,L] 

2)同以上..但使用純文本比較,而不是正則表達式:

RewriteCond %{HTTP_HOST} =mysite.com [NC,OR] 
RewriteCond %{HTTP_HOST} =www.mysite.com [NC] 
RewriteRule .* http://store.mysite.com%{REQUEST_URI} [R=301,L] 
1

到目前爲止,我已經做到了這一點:

RewriteCond %{HTTP_HOST} mysite\.com [NC] 
RewriteCond %{HTTP_HOST} www\.mysite\.com [NC] 
RewriteRule (.*) http://store.mysite.com/$1 [R=301,L] 

可以在任何的改善已在此進行?

其實第一的RewriteCond沒有檢測http://mysite.com

+0

您目前的規則對我來說沒有多大意義 - 它說:如果域名包含'mysite.com',並在同一個包含'www.mysite.com'然後重定向。第一個條件(你如何寫他們的方式)應該包括第二個條件。 – LazyOne 2012-03-23 12:56:14

+0

我在問題中寫下的第一種方法是將所有子域更改爲'store.mysite.com'。我需要具有其他子域的功能,但只需更改'http:// www.mysite'和'http:// mysite'以使用'store.'子域 – diggersworld 2012-03-23 15:01:02