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将所有子域重写为url路径_.htaccess_Url Rewriting - Fatal编程技术网

.htaccess htaccess将所有子域重写为url路径

.htaccess htaccess将所有子域重写为url路径,.htaccess,url-rewriting,.htaccess,Url Rewriting,我需要将所有前往domain1.com上任何子域的请求重定向到domain2.com,并将子域部分作为路径传递,例如: sub1.domain1.com->domain2.com/sub1 这适用于我当前的重写规则: RewriteCond%{HTTP\u HOST}^.+?\.domain1\.com$[NC] RewriteRule^(.*)$https://domain2.com/$1[L,R=301] 但是当我有一个子域时,它就不起作用了: sub1.sub2.domain1.com->

我需要将所有前往domain1.com上任何子域的请求重定向到domain2.com,并将子域部分作为路径传递,例如:

sub1.domain1.com->domain2.com/sub1

这适用于我当前的重写规则:

RewriteCond%{HTTP\u HOST}^.+?\.domain1\.com$[NC]

RewriteRule^(.*)$https://domain2.com/$1[L,R=301]

但是当我有一个子域时,它就不起作用了:

sub1.sub2.domain1.com->正在重定向到domain2.com/,而不将子域部分带到路径。(domain2.com/sub1.sub2)

我如何才能让它在子域的任何组合中工作?

我看不出目前谁在使用这种重定向。你发布的重写规则肯定不符合你所描述的

我建议采用这种方式移交“子域名”:

=>

这显然将忽略最初请求的任何路径,但正如我所理解的那样,这是你们想要的。如果您还希望保留路径并仅在其前面加上子域名,则此变体应将您指向正确的方向:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:(.+)\.)?domain1\.com$ [NC]
RewriteRule ^/?(.*)$ https://domain2.com/%1/$1 [L,R=301]
=>


一开始使用302重定向是一个好主意,只有在事情按预期运行时才将其更改为301重定向。这可以防止您遇到缓存问题…

您好,谢谢。但当我尝试转到sub1.sub2.domain1.com时,它仍然将我重定向到domain2.com/。原始路径超出范围,我只需要重定向后子域部分位于路径中。第一个变量将附加“子域名称”作为路径。我检查了模式是否匹配。所以问题是:为什么它在你的设置中不起作用?1.检查是否确实没有查看缓存结果(匿名浏览器、浏览器的网络控制台、http服务器的访问日志)。2.检查这些规则是否确实得到应用。你是怎么确定的,你是怎么检查的?还要查阅http服务器的错误日志文件并比较其中的条目,特别是尝试在该配置文件中输入明确的错误,这是否会导致错误条目?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:(.+)\.)?domain1\.com$ [NC]
RewriteRule ^/?(.*)$ https://domain2.com/%1/$1 [L,R=301]