2014-10-02 135 views
0

我有一個域example.com和.htaccess中,我使用下面的代碼轉發非www到www地址。htaccess與子域重定向

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

現在,我創建了一個子域test.example.com因爲上面的規則的,它要http://www.test.example.com,所以我認爲寫它自己的htaccess文件到www重定向到非www。所以在子域根目錄下,我有.htaccess文件,下面的規則。

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

它不工作,並在重定向循環去,我該如何解決?

回答

0

我發現這個問題很簡單的解決方案。

我的主站點文檔根目錄是/home/example/public_html,子域文件根目錄是/home/example/public_html/test

我剛剛將子域的文檔根目錄更改爲/home/example/test,它工作。

0

拿出來!和逃生

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^test.example.com$ 
RewriteRule ^(.*)$ http://test.example.com/$1 [R=301,L] 
+0

沒有工作,仍然是同樣的問題。我只在子域htaccess文件中做了更改 – Pankaj 2014-10-02 07:15:48

+0

您確定它實際上正在打印該文件嗎? Vhost問題可能? – brian 2014-10-02 07:18:22

+0

它的打擊,一旦我刪除htaccess規則,它開始工作並轉發到www.test.example.com – Pankaj 2014-10-02 07:22:47

0

你不需要2條規則。只要保持在主要的.htaccess此規則對於你的主要領域:

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

現在RewriteCond %{HTTP_HOST} ^example\.com$情況只會影響到主域離開你的子域不變。

+0

更改DocumentRoot將確保避免影響子域,但您仍然可以保留此規則以防將來創建一些CNAME別名域。 – anubhava 2014-10-03 07:01:56