是否将多个.htaccess重写规则合并为一行



我们正在启动一个新网站,我需要重定向几个旧的URL。在我的.htaccess中,我有:

RewriteCond %{HTTP_HOST} ^(domain1.com|domain2.com)$
RewriteRule ^Countries/(.*) "/local/" [R=301,QSA,L,NC]
RewriteCond %{HTTP_HOST} ^(domain1.com|domain2.com)$
RewriteRule ^England/(.*) "/local/" [R=301,QSA,L,NC]
RewriteCond %{HTTP_HOST} ^(domain1.com|domain2.com)$
RewriteRule ^Dependent_Areas/(.*) "/local/" [R=301,QSA,L,NC]
RewriteCond %{HTTP_HOST} ^(domain1.com|domain2.com)$
RewriteRule ^Ireland/(.*) "/local/" [R=301,QSA,L,NC]
RewriteCond %{HTTP_HOST} ^(domain1.com|domain2.com)$
RewriteRule ^Northern_Ireland/(.*) "/local/" [R=301,QSA,L,NC]
RewriteCond %{HTTP_HOST} ^(domain1.com|domain2.com)$
RewriteRule ^Scotland/(.*) "/local/" [R=301,QSA,L,NC]
RewriteCond %{HTTP_HOST} ^(domain1.com|domain2.com)$
RewriteRule ^Wales/(.*) "/local/" [R=301,QSA,L,NC]

哪种方法有效,但我很好奇什么是更清洁的方法?Baiscally我只需要重定向:

^Countries/(.*)
^Dependent_Areas/(.*)
^England/(.*)
^Ireland/(.*)
^Northern_Ireland/(.*)
^Scotland/(.*)
^Wales/(.*)

所有到他们的新位置是/本地/-这个重定向发生在2个不同的域

我的代码是有效的,但我想把这一切合并为一个规则,我不太确定是如何做到的。如有任何帮助,我们将不胜感激。

由于所有域的条件看起来都相同,因此可以制定如下的组合规则。此外,您不需要创建捕获组,因为我们稍后不会在规则中使用它们,所以我在这里将其更改为(?:.......)非捕获组。

请确保在测试URL之前清除浏览器缓存。

RewriteEngine ON
RewriteCond %{HTTP_HOST} ^(domain1.com|domain2.com)$ [NC]
RewriteRule ^(?:Countries|England|Dependent_Areas|Ireland|Northern_Ireland|Scotland|Wakes)/.*$ /local/ [R=301,QSA,L,NC]

很少有改进的建议:除了上述细节之外,还可以使用以下内容。

  • 在第一个条件中添加NC标志,使其不区分大小写匹配
  • 如果您想在主机名中捕获www(可选(,请将当前的第二部分更改为RewriteCond %{HTTP_HOST} ^(?:www.)?(domain1.com|domain2.com)$ [NC]

最新更新