在 rewriteCond 中匹配 HTTP_HOST?

Matching HTTP_HOST in rewriteCond?

我有两台服务器 运行 用于我的应用程序。

产品和分期如下。

如果 HTTP_HOST 匹配 www.sitedomain.com 或 stage.sitedomain.com

,我需要执行一些重定向规则

如果 URL 是 https://www.sitedomain.com/us-en page should redirect to https://www.sitedomain.us/

如果 URL 是 https://stage.sitedomain.com/us-en page should redirect to https://stage.sitedomain.us/

我正在执行以下步骤

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

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

问题是每当我点击 https://stage.sitedomain.com/us-en I am redirecting to https://www.sitedomain.us/, not to https://stage.sitedomain.us(简单地说它永远不会到达第 3 行)

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

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

根据您展示的示例,请您尝试以下操作。确保这是您的 htaccess 规则文件的第一条规则。请在测试您的网址之前清除您的浏览器缓存。

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


如果您只想将这些规则应用于非 es 网址,请尝试遵循以下规则,确保您一次使用以上或以下规则。

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