2

我有两台服务器正在为我的应用程序运行。

产品和分期如下。

如果 HTTP_HOST 与www.sitedomain.com或 stage.sitedomain.com匹配,我需要执行一些重定向规则

如果 URL 是https://www.sitedomain.com/us-en 页面应该重定向到https://www.sitedomain.us/

如果 URL 是https://stage.sitedomain.com/us-en 页面应该重定向到https://stage.sitedomain.us/

我正在执行以下步骤

RewriteCond %{HTTP_HOST} ^www\.sitedomain\.com$ [NC]                                  1
RewriteRule ^/us-en/(.*)$   https://www.sitedomain.us/$1      [R=301,L,NC]            2

RewriteCond %{HTTP_HOST} ^stage\.sitedomain\.com$ [NC]                                 3
RewriteRule ^/us-en/(.*)$   https://stage.sitedomain.us/$1      [R=301,L,NC]           4

问题是每当我点击https://stage.sitedomain.com/us-en时,我都会重定向到https://www.sitedomain.us/,而不是https://stage.sitedomain.us(简单地说永远不会到达第 3 行)

因此第 1 行始终执行为 True,并在第 2 行重写规则,为阶段 URL 执行。

谁能帮我解决这个问题??

4

1 回答 1

2

使用您显示的示例,您能否尝试以下操作。确保这是您的 htaccess 规则文件的第一条规则。请在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine ON
RewriteCond %{HTTP_HOST} ^(www|stage)\.(sitedomain\.com)$ [NC]
RewriteRule ^([^-]*)-.*/?$ https://%1.%2.$1/ [NE,R=301,L]


如果您只想将这些规则应用于 un-es url,然后尝试遵循,请确保您一次使用上述规则或以下规则。

RewriteEngine ON
RewriteCond %{HTTP_HOST} ^(www|stage)\.(sitedomain\.com)$ [NC]
RewriteRule ^(us)-en/?$ https://%1.%2.$1/ [NE,R=301,L]
于 2021-03-03T16:25:36.543 回答