通配符子域mod-rewrite不起作用

时间:2013-10-08 14:27:42

标签: php .htaccess mod-rewrite wildcard-subdomain

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

我想这样做:

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

这是我的代码

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,并且网址栏中的uniquename.domain.com不会更改。

新问题的不同之处在于有不同的状态目录,域名为state1.uniquename.domain.com。网址栏中的“state1.uniquename.domain.com”也不应该改变。

1 个答案:

答案 0 :(得分:1)

根据您的评论。确保DOCUMENT_ROOT的{​​{1}},www.domain.comstate1.domain.comstate2.domain.com

试试这段代码:

public_html