我一直在撞牆,試圖讓一些IIS重定向規則正常工作。我在Stack Overflow和IIS.net上搜索和閱讀了這些東西,但它根本不起作用。IIS重寫模塊 - 如何重定向維護路徑和查詢字符串,但添加額外的查詢字符串參數?
我想它在我的本地(實際)IIS,我已經安裝了重寫2.0模塊,並嘗試做了修復安裝就可以了。我在管理員cmd系列上做了一次iisreset,比我提到的還要多。
在我的hosts文件中,我爲URL my.test.com設置了127.0.0.1。
我要實現的是給一個子域網址重定向到主域名URL與一個額外的查詢字符串參數,同時保持現有的路徑和如果它們存在的查詢字符串值是什麼。
我設置3個規則如下是在網站的根文件夾:
<system.webServer>
<rewrite>
<rules>
<rule name="PathAndQueryString" enabled="true" stopProcessing="true">
<match url="(/\w*)(\?\w*=\w*)([&\w*=\w*]*)" />
<action type="Redirect" url="https://www.test.com{R:1}{R:2}{R:3}&param=value" appendQueryString="false" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="my.test.com" />
</conditions>
</rule>
<rule name="Querstring" enabled="true" stopProcessing="true">
<match url="(\?\w*=\w*)([&\w*=\w*]*)" />
<action type="Redirect" url="https://www.test.com{R:1}{R:2}&param=value" appendQueryString="false" />
<conditions>
<add input="{HTTP_HOST}" pattern="my.test.com" />
</conditions>
</rule>
<rule name="DomainOnly" enabled="true" stopProcessing="true">
<match url=".*" />
<action type="Redirect" url="https://www.test.com?param=value" appendQueryString="false" />
<conditions>
<add input="{HTTP_HOST}" pattern="my.test.com" />
</conditions>
</rule>
</rules>
</rewrite>
</system.webServer>
不幸的是,儘管測試模式和確認{R:X}捕獲是正確的,當我嘗試測試此使用邊緣,Chrome瀏覽器,火狐瀏覽器和IE瀏覽器的所有這些IIS行爲像規則不存在。
測試:
- https://my.test.com >>https://www.test.com?param=value
- https://my.test.com/SomePath >>https://www.test.com/SomePath
- https://my.test.com/SomePath?AParam=AValue >> https://www.test.com/SomePath?AParam=AValue¶m=value
無上述測試工作,他們獲得服務不重定向。
我也試圖把用作匹配URL模式的一部分的狀態模式,但它沒有用,要麼工作;事實上,我在閱讀Stack Overflow後將其移到了條件之後,該文章說當規則位於網站的根目錄中時,它不包含主機,但仍然沒有任何效果。
任何幫助將不勝感激。
UPDATE 1:對於路徑和查詢字符串規則試圖從該圖案的那個開始去除加粗部分(/ \ W *)。沒有任何影響。
更新2:試圖使非常喜怒無常「失敗請求跟蹤」功能,當它實際上是工作的,它說,沒有任何匹配URL模式是匹配的,除了它現在已經開始踢在第三規則重定向,但由於顯而易見的原因,不保持路徑和其他查詢字符串。
UPDATE 3:在Edge和IE上,沒有任何規則可以使用。在Chrome和FF上,只有域名重定向似乎正在工作 - 但是如果我禁用域名唯一規則並重新啓動IIS,就好像規則仍然存在--FFS給了我力量這個垃圾現在真的開始沸騰我的血液 - 這不應該是那該死的困難。