2013-08-19 136 views
0

所以,我有我的htaccess的htaccess的非www會www和刪除子域名WWW

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

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

運行完美重定向非www到www我的域的以下重寫代碼。

我有一個子域名,我們稱之爲'sub.domain.com',它可以找到。如果我轉到www.sub.domain.com,它會重定向到'sub.domain.com/sub/' 任何人有一個想法爲什麼?

+0

什麼壞了?至於預期的行爲是什麼? –

+0

我想有另一個rewriterule在內部重寫你的子域到正確的目錄。重定向使這可見。將你的規則與'^%1 /(.*)$'匹配起來,它應該像你期望的那樣工作。 – Sumurai8

+0

@ Sumurai8它不重定向,www.sub.domain.com - > sub.domain.com –

回答

0

您的問題中沒有任何規則將請求路由到子域的文件夾。如果它最初不在請求中,則/sub/不應該在那裏。

也就是說,你所有的重定向規則都需要之前的任何路由規則。路由規則是東西,內部請求路由到其它的URI,例如:

RewriteCond %{HTTP_HOST} ([^\.]*)\.domain\.com$ [NC] 
RewriteRule (.*) /%1/$1 [L] 

該規則internall路線到一個名爲同樣的事情,子域文件夾。如果此規則在之前爲重定向,則將應用這兩個規則,並且重定向的URI將變爲/sub/。您需要在之後將您的路由規則放置在之後,例如您的重定向規則。具有http://R標誌的所有規則。