2013-10-08 121 views
-1

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

我想使目錄www.domain.com/folder1/index.php?name=rockrock.domain.com

至於另外一個,我要讓www.domain.com/folder1/folder2/index.php?id=55.domain.com

有沒有辦法做到這一點?我是mod改寫的初學者。非常感謝您的幫助。由於

其他信息

我需要他們兩個。他們會有不同的變數。

例如,/folder1/index.php基於狀態名稱(?state = 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

謝謝

回答

0

在htaccess文件在你的文檔根目錄,你可以添加特定的 「搖滾」 的規則, 「5」:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^rock\.domain\.com$ [NC] 
RewriteRule ^$ /folder1/index.php?name=rock [L,QSA] 

RewriteCond %{HTTP_HOST} ^5\.domain\.com$ [NC] 
RewriteRule ^$ /folder1/folder2/index.php?name=5 [L,QSA] 

如果你希望它在另一個方向重定向,然後你需要:

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^state=(.*)$ 
RewriteRule ^folder1/index\.php$ http://%1.domain.com/? [L,R=301] 

RewriteCond %{QUERY_STRING} ^name=(.*)$ 
RewriteRule ^folder1/folder2/index\.php$ http://%1.domain.com/? [L,R=301] 
+0

謝謝。但是如果搖滾和5會根據php的結果改變。另一個詞,它是靈活的,這個詞可以是任何東西。 –

+0

@RedzwanLatif你應該如何區分'/ folder1/index.php'和'/ folder1/folder2/index.php'之間的區別? –

+0

我已經在我的問題中提供了額外的信息。謝謝 –

0

以下通用規則應該爲你工作:

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] 
+0

它會是/folder1/folder2/index.php的相同代碼嗎? –

+0

你想要'/ folder1/folder2/index.php'還是'/ folder1/index.php'? – anubhava

+0

我需要他們兩個。他們會有不同的變數。例如,/folder1/index.php基於狀態名稱(?state = 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。謝謝 –