2013-10-08 73 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。谢谢 –