我有以下IIS配置,强制PDF在浏览器中作为文件下载,而不是在浏览器窗口中打开。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Force Download for PDFs" preCondition="FileIsPDF">
<match serverVariable="RESPONSE_Content-Disposition" pattern=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" pattern="(.*)\\([^/]+)\.pdf$" />
</conditions>
<action type="Rewrite" value="attachment; filename={C:2}.pdf" />
</rule>
<preConditions>
<preCondition name="FileIsPDF">
<add input="{REQUEST_FILENAME}" pattern="\.pdf$" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
但是,如果文件名是xxx_print.pdf,我需要它不适用,换句话说,我希望上述规则匹配所有.pdf文件,除了那些在文件名末尾有_print的文件。 这怎么可能?需要为IIS7及更高版本工作。
请注意,如果您知道如何使用javascript的正则表达式匹配没有特定子字符串的字符串,则可以在不了解IIS的情况下回答这个问题。
答案 0 :(得分:0)
原来我只需要使用negate =“true”属性为规则添加另一个条件:
<add input="{REQUEST_FILENAME}" pattern="(.*)\\([^/]+)_print\.pdf$" negate="true" />