Apache-2.4
If else 條件 Apache 301 重定向
我有多個看起來像這樣的 URL:
- stage-app-platform-com.something.com
- stage.something.com
- stage1.something1.com
我想創建一個 Apache 301 重定向規則,如果 URL 包含模式app-platform應該轉發到 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/*
由於我對編寫重寫規則非常陌生,我發現它有點困難。我將不勝感激任何幫助。
試試下面的。但首先明確清除您的瀏覽器記憶體。重定向通常被記憶體。
<if "%{HTTP_HOST} =~ /^stage-app-platform-com\./"> 重定向永久 https://stage1.app.com/ </如果> <其他> 重定向永久 https://stage2.app.com/ </else>
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