Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Apache .htaccess从动态域/主机名中剥离子域_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Apache .htaccess从动态域/主机名中剥离子域

Apache .htaccess从动态域/主机名中剥离子域,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我有一些htaccess重定向到www.domain.com,除非它已经在www或www2子域上 RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} !^www2\. RewriteRule (.*) http://www.%{HTTP_HOST}/$1 但是这段当前的代码并没有去除主机上已有的任何当前子域 因此,我正在寻找的是一些htaccess,它将首先剥离子域,然后添加www.或类似的想法 不过,我的另一个要求是,域名是动态

我有一些htaccess重定向到www.domain.com,除非它已经在www或www2子域上

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} !^www2\.
RewriteRule (.*) http://www.%{HTTP_HOST}/$1
但是这段当前的代码并没有去除主机上已有的任何当前子域

因此,我正在寻找的是一些htaccess,它将首先剥离子域,然后添加www.或类似的想法


不过,我的另一个要求是,域名是动态的,因为在许多网站上使用了相同的htaccess。这就是为什么我在当前代码中使用%{HTTP_HOST}变量的原因。但可能还有另一个变量更适合这种情况?

例如,您可以尝试匹配
www(2).domain.tld
方案,使用
HTTP\u host
的附加条件捕获主机部分,并在规则替换部分中使用它,例如

RewriteCond %{HTTP_HOST} !^www2?\.[^\.]+\.[^\.]+$ [NC]
RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$
RewriteRule (.*) http://www.%1/$1 [R=302,L]
这应该将所有非
www(2).domain.tld
主机重定向到
www.domain.tld


另外,请确保根据您试图通过这些重定向实现的目标使用适当的参数。

尝试查看输出其print\r($\u SERVER)的php$\u服务器变量,也许您可以找到您需要的参数,因为htaccess&php使用相同的varsHi@Rustam,为此,我想要一个纯htaccess解决方案。(尽管在PHP或任何服务器端语言中都很简单),所以您希望删除所有子域,以防它不是以
www
www2
开头?例如,
www.foo.bar.example.com
很好,但是
foo.bar.example.com
应该重定向到
www.example.com
?Hi@ndm,实际上所有子域都应该重定向,例如foo.example.com、foo.bar.example.com和www.foo.bar.example.com也应该重定向到www.example.com@ndm,谢谢,但是,这似乎不适用于使用二级域名(如domain.co.uk或doamin.org.uk)的域。关于这一点有什么想法吗?就我而言,我只需要以下支持:.co.uk.com.org.org.uk.com.au.net.info。因此,我将尝试修改正则表达式以允许这些操作。在我的.htaccess中结束了以下操作:
RewriteCond%{HTTP_HOST}^www2?\([^\.]+\(com(\.au)?(recds12\)?co\.uk | org(\.uk)?net | info))$RewriteCond%{HTTP|u HOST}([^\.]+\(com(\.au)?(recds12\)?co\.uk org(\.uk net | info))$RewriteRule(.*http://www.%1/$1[R=301,L]