我有两台服务器正在为我的应用程序运行。
产品和暂存如下。
如果 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 执行,并在为阶段 URL 执行的第 2 行重写规则。
谁能帮我解决这个问题吗?
最佳答案
根据您显示的示例,您可以尝试以下操作吗?确保这是 htaccess 规则文件的第一条规则。在测试您的网址之前,请清除您的浏览器缓存。
RewriteEngine ON
RewriteCond %{HTTP_HOST} ^(www|stage)\.(sitedomain\.com)$ [NC]
RewriteRule ^([^-]*)-.*/?$ https://%1.%2.$1/ [NE,R=301,L]
如果您只想将这些规则应用于 un-es 网址,请尝试遵循以下规则,请确保一次使用上述或以下规则。
RewriteEngine ON
RewriteCond %{HTTP_HOST} ^(www|stage)\.(sitedomain\.com)$ [NC]
RewriteRule ^(us)-en/?$ https://%1.%2.$1/ [NE,R=301,L]
关于apache - 在 rewriteCond 中匹配 HTTP_HOST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66460944/