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
Php htaccess是否将子域重定向到特定页面?_Php_.htaccess - Fatal编程技术网

Php htaccess是否将子域重定向到特定页面?

Php htaccess是否将子域重定向到特定页面?,php,.htaccess,Php,.htaccess,我需要将所有子域重定向到特定页面,而不实际更改URL,因为我将根据URL中的子域在该特定页面上显示不同的内容 假设我的站点位于testdomain.com/site1/ 我希望所有子域,如xyz.testdomain.com/site1/甚至xyz.testdomain.com,都被重定向到 然后需要加载浏览器,但URL仍然是xyz.testdomain.com 这样做的目的是,有人可以访问abc.testdomain.com或xyz.testdomain.com,两者都会将用户带到testdo

我需要将所有子域重定向到特定页面,而不实际更改URL,因为我将根据URL中的子域在该特定页面上显示不同的内容

假设我的站点位于testdomain.com/site1/

我希望所有子域,如xyz.testdomain.com/site1/甚至xyz.testdomain.com,都被重定向到

然后需要加载浏览器,但URL仍然是xyz.testdomain.com

这样做的目的是,有人可以访问abc.testdomain.com或xyz.testdomain.com,两者都会将用户带到testdomain.com/site1/index.php/test.php,然后在test.php上,我有一些代码可以获取URL,如果URL是abc.testdomain.com,它会显示某些内容,然而,如果子域是xyz.testdomain.com,它将显示不同的内容


这是我在htaccess中可以做的事情吗?如果是这样的话,怎么做?

使用
mod\u rewrite
您可以一起解决这个问题

# Step 1: If the user went to example.com or www.example.com
# then we don't want to redirect them. (S=1 says skip the next rule)
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com
RewriteRule ^ - [S=1]

# Step 2: Anything else is redirected to our catcher script.

# Option 1: keeps the path they went to, but discards the domain
# i.e. xyz.example.com/abc/def.txt => /var/www/cgi-bin/abc/def.txt
RewriteRule ^/?(.*) /var/www/cgi-bin/$1 [QSA,L]

# Or Option 2: take all requests to the same file
# i.e. xyz.example.com/abc/def.txt => /var/www/cgi-bin/myfile.php
RewriteRule ^ /var/www/cgi-bin/myfile.php [QSA,L]
QSA
告诉它转发查询字符串,
L
告诉它停止寻找更多重定向(这不是绝对必要的,但如果你有很多这样的事情发生,有时会有帮助)

您还可以将变量作为查询参数传递给脚本,
QSA
标志确保它们不会替换原始值

# xyz.example.com/abc/def.txt => /var/www/cgi-bin/myfile.php?host=xyz.example.com&path=/abc/def.txt
RewriteRule ^/?(.*) /var/www/cgi-bin/myfile.php?host=%{HTTP_HOST}&path=/$1 [QSA,L]

这意味着您不必担心找出请求来自脚本内部的位置(我不确定这实际上可能是不可能的)。相反,您可以将其作为普通参数读取(它也可以像普通参数一样进行黑客攻击;请确保对其进行清理)。

这是一个副本。我就知道。@ColeJohnson有这样一个: