[英]How to check a file in a sub-folder for IIS Rewrite?
web.config 中的以下用於重寫工作正常:
<rule name="foo" stopProcessing="true">
<match url="foo.dat$"/>
<conditions>
<!-- Match brotli requests -->
<add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
</conditions>
<action type="Rewrite" url="_compressed_br/foo.dat" />
</rule>
我想添加一個條件以確保僅當子文件夾中的壓縮文件存在時才完成重寫:
<rule name="foo" stopProcessing="true">
<match url="foo.dat$"/>
<conditions>
<!-- Match brotli requests -->
<add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
<!-- Check if the pre-compressed file exists on the disk -->
<add input="{DOCUMENT_ROOT}/_compressed_br/foo.dat" matchType="IsFile" negate="false" />
</conditions>
<action type="Rewrite" url="_compressed_br/foo.dat" />
</rule>
重寫永遠不會在條件下發生。 這意味着檢查總是返回 false。 我還嘗試了以下條件,但無濟於事:
<add input="{DOCUMENT_ROOT}_compressed_br/foo.dat" matchType="IsFile" negate="false" />
<add input="/_compressed_br/foo.dat" matchType="IsFile" negate="false" />
<add input="_compressed_br/foo.dat" matchType="IsFile" negate="false" />
你能提供一個提示嗎?
編輯(2019-09-27):文件夾結構:
Web app foo 的目錄是...\dist。 URL打開web應用是: http://localhost/foo/
編輯(2019-10-01):
接受的答案就像上述問題的魅力。
我有一個新的挑戰。 如果我將 web 文件放在以下目錄中: C:\mywebsite\home\dist\web.config
網站綁定8086端口,可以瀏覽如下web頁面: https://localhost:8086/home/dist/
為了使重寫工作,我將不得不使用以下內容:
<add input="{APPL_PHYSICAL_PATH}home\dist\_compressed_br\foo.dat" matchType="IsFile" negate="false" />
由於我可以將文件夾 dist 下的內容與相應的 web.config 放在任何目錄中,我想知道是否有一個參數可以替換“{APPL_PHYSICAL_PATH}home\dist”,以便我可以使用相同的 web.config我把它們放在哪里。
您可以使用{APPL_PHYSICAL_PATH}
找到您的 Web app foo
的根文件夾。
設置響應 header Content-Encoding: br
可能還需要防止意外行為,例如foo.dat
的文件下載對話框,而不是顯示其解碼響應。
所以這是你需要的規則:
<rule name="foo" stopProcessing="true">
<match url="^foo\.dat$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
<!-- {APPL_PHYSICAL_PATH} equals to {DOCUMENT_ROOT} + "dist\" in your setup -->
<add input="{APPL_PHYSICAL_PATH}_compressed_br\foo.dat" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="_compressed_br/foo.dat" />
<serverVariables>
<set name="RESPONSE_Content-Encoding" value="br" />
</serverVariables>
</rule>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.