只有第一条规则适用于我的.htaces,并覆盖其他所有规则



我需要将一些网站重定向到另一个域。我的问题是,只有第一条规则在条件出现后才适用,其余的都不起作用。

以下是的示例

RewriteCond %{HTTP_HOST} ^(website.dk|website-dk|www.website.dk) [NC]
RewriteRule ^da/ https://www.website.se/sv/ [L,R=301]
RewriteRule ^da/test1/ https://www.website.se/sv/test1/ [L,R=301]
RewriteRule ^da/test2/foobar/ https://www.website.se/sv/test2/foobar/ [L,R=301]
RewriteRule ^da/test3/foobar123/ https://www.website.se/sv/test3/foobar123/ [L,R=301]
RewriteRule ^da/test4/ https://www.website.se/sv/test4/ [L,R=301]

第一个RewriteRule在这里工作。但如果我尝试第二个,我会得到与第一个相同的重定向。

这是因为^da/中的模式也匹配其余规则。您可以尝试以下重构规则:

RewriteCond %{HTTP_HOST} ^(?:www.)?website[.-]dk$ [NC]
RewriteRule ^da/?$ https://www.website.se/sv/ [L,R=301,NC]
RewriteCond %{HTTP_HOST} ^(?:www.)?website[.-]dk$ [NC]
RewriteRule ^da/test1/?$ https://www.website.se/sv/test1/ [L,R=301]
RewriteCond %{HTTP_HOST} ^(?:www.)?website[.-]dk$ [NC]
RewriteRule ^da/test2/foobar/?$ https://www.website.se/sv/test2/foobar/ [L,R=301]
RewriteCond %{HTTP_HOST} ^(?:www.)?website[.-]dk$ [NC]
RewriteRule ^da/test3/foobar123/?$ https://www.website.se/sv/test3/foobar123/ [L,R=301]
RewriteCond %{HTTP_HOST} ^(?:www.)?website[.-]dk$ [NC]
RewriteRule ^da/test4/?$ https://www.website.se/sv/test4/ [L,R=301]

请注意,在第一条规则中使用了锚点以获得精确的匹配,在第二条规则中进行了替换以覆盖所有情况。

最新更新