.htaccess htaccess将所有子域重写为url路径
我需要将所有前往domain1.com上任何子域的请求重定向到domain2.com,并将子域部分作为路径传递,例如: sub1.domain1.com->domain2.com/sub1 这适用于我当前的重写规则:.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->
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]