2013-10-08 21 views
1

我有一個通配符子域* .domain.com分配給public_html /。通配符子域mod重寫不起作用

我想做的事情是這樣的:

例如,/folder1/index.php是基於狀態的域名(狀態= Statename的?)。

對於/folder1/folder2/index.php,它將基於唯一名稱(?name = uniquename)。

所以,www.domain.com/folder1/index.php?state=statename將statename.domain.com

和www.domain.com/folder1/folder2/index.php?name=uniquename將uniquename.domain.com

這是我的代碼

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+folder1/index\.php\?state=([^\s&]+) [NC] 
RewriteRule^http://%1.domain.com/? [R=301,L] 

RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+folder1/folder2/index\.php\?name=([^\s&]+) [NC] 
RewriteRule^http://%1.domain.com/? [R=301,L] 

問題是,它重定向回public_html目錄。代碼有問題嗎?

舊代碼

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] 
RewriteRule ^$ /index [L] 

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).domain.com$ [NC] 
RewriteRule ^(index)/?$ /$1.php?name=%2 [L,NC,QSA] 

代碼解釋:當用戶輸入uniquename.domain.com,它會自動轉到www.domain.com/index.php?name=uniquename和URL的uniquename.domain.com酒吧不會改變。

新問題的區別在於有不同的狀態目錄,域名是state1.uniquename.domain.com。 url欄中的'state1.uniquename.domain.com'不應該改變。

+0

我記得寫這些規則:P請解釋一下沒有工作?我不明白你的意思是'它重定向到public_html目錄' – anubhava

+0

每當我鍵入uniquename.domain.com,它將進入domain.com(public_html目錄),而不是uniquename.domain.com(www.domain.com /folder1/folder2/index.php?name=uniquename).Thanks –

+0

但您在瀏覽器中輸入「www.domain.com/folder1/folder2/index.php?name = uniquename」吧? – anubhava

回答

1

根據您的意見。確保DOCUMENT_ROOTwww.domain.comstate1.domain.comstate2.domain.compublic_html

試試這個代碼:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+folder1/index\.php\?state=([^\s&]+) [NC] 
RewriteRule^http://%1.domain.com/? [R=301,L] 

RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+folder1/folder2/index\.php\?name=([^\s&]+) [NC] 
RewriteRule^http://%1.domain.com/? [R=301,L] 

RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|tiff|css|js)$ [NC] 
RewriteCond %{HTTP_HOST} ^([^.]+)\.([^.]+)\.domain\.com$ [NC] 
RewriteRule^/state/%1/client/index.php?name=%2&page=%{REQUEST_URI} [L,NC] 
+0

因此,如果我在url欄中鍵入state1.uniquename.domain.com,它會被標識爲www.domain.com/state/state1/index.php?name=uniquename? –

+0

我明白了,如果那是你想要的,那麼讓我編輯它。 – anubhava

+0

但是,您希望如何處理'http:// state1.uniquename.domain.com/something'? – anubhava