Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess子域作为包含所有变量的文件参数_.htaccess_Rewrite - Fatal编程技术网

.htaccess子域作为包含所有变量的文件参数

.htaccess子域作为包含所有变量的文件参数,.htaccess,rewrite,.htaccess,Rewrite,我想使用.htaccess(linux/apache)重定向此url 我想保持“原样”的www子域的所有调用如下 www.example.com/index.php www.example.com/test.php?id=1&name=a www.example.com/whatever.php?whateverurl=xxxx 但是我想重定向所有的通配符url,像这样,子域作为额外变量,指向当前的无限url变量 比如说 xxx.example.com -> example.co

我想使用.htaccess(linux/apache)重定向此url

我想保持“原样”的www子域的所有调用如下

www.example.com/index.php
www.example.com/test.php?id=1&name=a
www.example.com/whatever.php?whateverurl=xxxx
但是我想重定向所有的通配符url,像这样,子域作为额外变量,指向当前的无限url变量

比如说

xxx.example.com -> example.com/?subdomain=xxx
yyy.example.com/index.php -> example.com/index.php?subdomain=yyy
whatever.example.com/test.php?var=1 -> example.com/test.php?subdomain=whatever&var=1
whatever.example.com/whatever.php?var1=1&var2=2 -> example.com/whatever.php?subdomain=whatever&var1=1&var2=2
这可能吗

谢谢你

一旦你设置了你的
.htaccess
文件:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example\.com$
RewriteRule ^(.*)\??(.*)?$ $1?host=%{HTTP_HOST}&%{QUERY_STRING} [L] [L]

这个规则是有效的,尽管它将为您提供整个主机,而不仅仅是子域,您必须在PHP中解析它。

谢谢您的回答

这条规则似乎有效

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ [NC]
RewriteRule ^/?(.*)$ $1?subdomain=%1 [QSA,L,NE]
暂时没有问题

再次感谢你的回答

致意


Vangelis

很高兴能帮上忙,但很抱歉这不完美。然而,我确实意识到
RewriteCond
行应该是
RewriteCond%{HTTP_HOST}^www.example\.com$