2016-03-20 80 views
0

我聽說過這個主題(.htaccess redirect all pages to new domain)非常翔實。但是,我的請求與此原始請求有點不同。htaccess Mod_Rewrite從主域到子域

上面的線程討論了從舊域名重定向到新域名的問題,但是,我要求只將主域名轉發到子域名。

這是一個問題 - 如何自動將我的主域中的所有請求轉發到子域。例如 -

登陸網址:http://example.com 轉發網址:http://sub.example.com

登陸網址:http://example.com?var=foo 轉發網址:http://sub.example.com?var=foo

如果有人對我的轉發URL的土地,我不想讓他們再次被重定向與301.簡單地說,我不想使用一個規則,如果着陸URL是相同的,它總是重定向登錄在http://sub.example.com上的所有請求。

如果我遵循上述鏈接的建議,我相信會發生在我的情況下,因爲我想從主域轉發到子域。

這是我到目前爲止,它正在做部分工作。它只會將我的一個域轉發到另一個子域。但是,如果有任何網址參數,則它不起作用,它只是保持原來的URL。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^$ http://sub.example.com/? [R=301,NE,NC,L] 

在簡單的話 - 當有http://example.com?var=foo,它仍然因爲它是我的代碼沒有反應。

任何指導都會很棒。

回答

2

您需要刪除一個條件並更改您的正則表達式。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] 
RewriteRule ^(.*)/?$ http://sub.example.com/$1 [R=301,NE,NC,L] 

清除瀏覽器緩存,然後嘗試一下。讓我知道它是如何工作的。

+1

很好的答案!它神奇地工作。 非常感謝! – pinaldave

+0

很高興我能幫上忙。 –