如果其他条件 Apache 301 重定向

如果其他条件 Apache 301 重定向

我有多个如下所示的 URL:

  • stage-app-platform-com.something.com
  • stage.something.com
  • stage1.something1.com

我想创建一个 Apache 301 重定向规则,如果 URL 包含以下模式应用平台应转发到 stage1.app.com,而到达服务器的任何其他请求都应重定向到 stage2.app.com。为此,我编写了以下重定向规则:

RewriteRule ^stage-app-platform-com$ https://stage1.app.com/ [L,R=301]
RewriteRule ^(.*)$ https://stage2.app.com/ [L,R=301]

第二条规则规定,所有访问的流量都应重定向到https://stage2.app.com/可以工作,但第一个似乎不起作用。如果请求第一个 URL,Apache 会转发到https://stage2.app.com/代替https://stage1.app.com/

由于我对编写重写规则还很陌生,所以我觉得有点困难。如果能得到任何帮助,我将不胜感激。

答案1

尝试以下操作。但首先明确清除浏览器缓存。重定向通常会被缓存。

<如果“%{HTTP_HOST} =〜/ ^ stage-app-platform-com \./”>
   永久重定向 https://stage1.app.com/
</如果>
<其他>
   永久重定向 https://stage2.app.com/
</其他>

答案2

RewriteRule看不到 URL 的主机名部分。您RewriteCond还需要使用类似以下内容的内容:

RewriteCond "%{HTTP_HOST}" "^stage-app-platform-com\."
RewriteRule .* https://stage1.app.com/ [L,R=301]
RewriteRule .* https://stage2.app.com/ [L,R=301]

RewriteRule这样,只有条件匹配时才会应用第一个RewriteCond条件。如果不匹配,则应执行第二个条件RewriteRule

文档mod_rewrite在这里:http://httpd.apache.org/docs/current/mod/mod_rewrite.html

相关内容