[英]IIS URL Rewrite main entry site redirect to blue / green entry
首先,我不太擅長寫正則表達式,為此我深表歉意。
我正在嘗試設置IIS,以將URL從一個主條目重寫為第二個藍色/綠色條目站點。 作為多租戶設置的一部分,用戶將通過美國州縮寫來重定向。 目前,我們只會在域名后尋找2個字母。 所有流量都將進入主入口站點https://dev.app.com
並重定向到欣賞狀態的URL
例如: http://dev.app.com/ca
: http://dev.app.com/ca
或http://dev.app.com/ny
默認情況下,進入網站http://dev.app.com
根目錄的用戶將自動重定向到http://dev.app.com/ca
。 CA是我們的默認狀態。
每個州都有自己的藍色/綠色入口站點。 例如: http://ca.app.entry
。 藍色/綠色條目站點具有反向代理重寫規則,可將流量重定向到當前正在運行的任何站點。 部署期間會更新藍色/綠色重寫規則。
此外,每個州都有自己的API。 例如: http://ca.api.com
: http://ca.api.com
。 主條目URL如下所示: https://dev.app.com/ca/ext
: https://dev.app.com/ca/ext
,它將流量轉發到正確狀態的API。
我一直在嘗試設置重寫規則以捕獲狀態縮寫,並且還查找該ext
如果存在)並將其轉發到適當的AI站點。
對於默認URL,我首先創建一個重定向規則,該規則位於重寫規則之前
<httpRedirect enabled="true">
<add wildcard="/" destination="/ca" />
</httpRedirect>
我嘗試捕獲狀態縮寫的下一條規則:
<rule name="StateRewrite" stopProcessing="true">
<match url="/([a-z]{2})/$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://{R:1}.app.entry" logRewrittenUrl="true" />
</rule>
測試表達式,只要在[state] /之后沒有任何內容,我將得到正確的2字母狀態縮寫。 因此http://dev.app.com/ca/someOtherqueryString不會產生匹配項。 轉到http://dev.app.com/ca/似乎不會將流量轉發到[state] .app.entry / [state]。 如果我直接進入該州的入境站點,它將起作用。 因此,轉到ca.app.entry / ca路由到正確的藍色/綠色站點。 查看日志似乎並沒有構造整個URL。 我只在日志中看到/[state]/
: 2018-12-27 16:57:25 127.0.0.1 GET /ca/
對於API網站,我嘗試了一個類似(.*)/ext/(.*)
的模式規則。 該規則位於狀態縮寫規則之后,但仍未路由到正確的狀態API站點。
我可以使用一些幫助來構建規則以及如何對其進行排序。
下面的正則表達式將從字符串[az]{2}$
的末尾返回2個字符,如果后面可以有一個/,則它將像這樣[az]{2}/?$
這是正則表達式,因為它應該適用於重寫規則,但我不確定確切如何使用替換進行重寫,因此希望這會有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.