1
我正在使用IIS 7.5與Url重寫模塊。這是我的規則。IIS Url重寫不適用於某些擴展名和字符
<rule name="stash.domain.com" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://192.168.5.9:8080/{R:1}" logRewrittenUrl="true" />
<conditions>
<add input="{HTTP_HOST}" pattern="^stash.domain.com$" />
</conditions>
</rule>
一切正常,但如果URL包含和「的.cs」的延伸,或者如果‘+’號是在URL中的任意位置。
例如,這些不工作
http://stash.domain.com/projects/MDX/repos/medxchange.library/browse/Src/MedXChange.Api/CoreServiceUrls.cs
http://stash.domain.com/projects/MDX/repos/medxchange.library/browse/Src/MedXChange.Api/CoreService+Urls
我從IIS以下響應與這些網址。
404 - File or directory not found.
但是,這些都將工作,但是,代理服務器將返回一個不錯的「找不到文件」,它告訴我的規則進行處理和轉發請求正確。
http://stash.domain.com/projects/MDX/repos/medxchange.library/browse/Src/MedXChange.Api/CoreServiceUrls
我懷疑IIS有一些頂級濾波要麼防止被服務特定文件擴展名,或嘗試在IIS中nativelly爲他們服務,繞過重寫規則。另外,我想除了「+」之外還有更多的字符會導致重寫規則被忽略。
您可能還需要設置<的httpRuntime requestPathInvalidCharacters = 「」/> 以及,如果您的網址中有任何奇怪的字符,如&,*或:,IIS會將它們過濾爲「潛在危險」。 –