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

Php 通配符子域mod rewrite不起作用,php,.htaccess,mod-rewrite,wildcard-subdomain,Php,.htaccess,Mod Rewrite,Wildcard Subdomain,我有一个通配符子域*.domain.com分配给public_html/ 我想这样做: 例如,/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

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

我想这样做:

例如,/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]
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]
问题是它重定向回public_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]
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”也不应更改。

根据您的评论。确保
www.domain.com
state1.domain.com
state2.domain.com
DOCUMENT\u ROOT
public\u 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]

根据你的评论。确保
www.domain.com
state1.domain.com
state2.domain.com
DOCUMENT\u ROOT
public\u 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]


我记得我写过这些规则:P请解释什么不起作用?我不明白你所说的
它重定向回public_html目录是什么意思
每当我键入uniquename.domain.com,它就会转到domain.com(public_html目录),而不是uniquename.domain.com(www.domain.com/folder1/folder2/index.php?name=uniquename).Thanks但您正在浏览器中键入
www.domain.com/folder1/folder2/index.php?name=uniquename
,对吗?重复您是否在这些域中安装了任何php/CMS框架?我记得写过这些规则:P请解释什么不起作用?我不明白你所说的
它重定向回public_html目录是什么意思
每当我键入uniquename.domain.com,它就会转到domain.com(public_html目录),而不是uniquename.domain.com(www.domain.com/folder1/folder2/index.php?name=uniquename).Thanks但您正在浏览器中键入
www.domain.com/folder1/folder2/index.php?name=uniquename
,对吗?重复您是否在这些域中安装了任何php/CMS框架?因此,如果我在url栏中键入state1.uniquename.domain.com,它会被标识为www.domain.com/state/state1/index.php吗?name=uniquename?我知道了,如果这是您想要的,那么让我来编辑它。但是您想要如何
http://state1.uniquename.domain.com/something
要处理吗?目前,只有一个页面是index.php。所以可能是这样,但是是否可以在不显示“index.php”的情况下显示url?好的,请参阅编辑。它将使
http://state1.uniquename.domain.com/something
to
www.domain.com/state/state1/index.php?name=uniquename&page=/something
因此,如果我在url栏中键入state1.uniquename.domain.com,它会被标识为www.domain.com/state/state1/index.php吗?name=uniquename?我知道了,如果这是您想要的,那么让我来编辑它。但是您想要如何
http://state1.uniquename.domain.com/something
要处理吗?目前,只有一个页面是index.php。所以可能是这样,但是是否可以在不显示“index.php”的情况下显示url?好的,请参阅编辑。它将使
http://state1.uniquename.domain.com/something
to
www.domain.com/state/state1/index.php?name=uniquename&page=/something