我有多个如下所示的 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