-1

我有一个*.domain.com分配给 public_html/ 的通配符子域。

我想将目录www.domain.com/folder1/index.php?name=rock设为rock.domain.com.

www.domain.com/folder1/folder2/index.php?id=5至于另一个,我想做5.domain.com

有没有办法做到这一点?我是 mod-rewrite 的初学者。非常感谢您的帮助。谢谢

附加信息

我需要他们两个。他们会有不同的变量。

例如,/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

谢谢

4

2 回答 2

0

在文档根目录的 htaccess 文件中,您可以添加特定于“rock”和“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]
于 2013-10-08T05:50:31.007 回答
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]
于 2013-10-08T05:58:12.727 回答