Rewriterule上的相同源但不同目标进行重定向

因此,我有这两个子站点,需要将其重定向到不同的语言环境,但是具有相同的来源,但是只有第一个重写器才能在两个域中生效。

会发生什么:

example-site1.com/register ----> https://register.index.com/en-us

example-site2.com/register ----> https://register.index.com/en-gb

下面的代码发生了什么

example-site1.com ----> https://register.index.com/en-us

example-site2.com ----> https://register.index.com/en-us

###########################

RewriteCond %{HTTP_HOST} ^example-site1\.com [OR]
RewriteCond %{HTTP_HOST} ^www\.example-site1\.com
RewriteRule ^/(registration|registration/)$ https://register.index.com/en-us [L,R=301]
RewriteRule ^/(register|register/)$ https://register.index.com/en-us [L,R=301]

RewriteCond %{HTTP_HOST} ^example-site2\.com [OR]
RewriteCond %{HTTP_HOST} ^www\.example-site2\.com
RewriteRule ^/(registration|registration/)$ https://register.index.com/en-gb [L,R=301]
RewriteRule ^/(register|register/)$ https://register.index.com/en-gb [L,R=301]
ccjjccnn 回答:Rewriterule上的相同源但不同目标进行重定向

RewriteCond仅影响紧随其后的RewriteRule规则,而不影响 multiple 规则-因此,上面的第二个RewriteRule完全独立于上面的主机名检查。您需要将这两个规则组合为一个(在这种情况下应该没问题,因为目标始终是相同的URL,并且您仅需要四个[实际上是两个,请参见下文]在此处进行匹配)即可。在第二个RewriteRule之前必须再次重复RewriteConds。第二个块也一样。


(registration|registration/)有点多余-您不需要向后引用匹配的内容,因此您可以在关键字之后添加斜杠,使其成为可选的-registration/?。因此,如果将两种情况组合成一个模式,^(registration|register)/?$应该可以解决问题。 (我删除了前导斜杠,从一开始它实际上根本不起作用-如果您在.htaccess中配置重写,则该前导斜杠已经被剥去了。)

本文链接:https://www.f2er.com/3149884.html

大家都在问