web.config URL 访问和重写

web.config URL 访问和重写

我正在尝试清理一些 PDF 文件的 URL。现在,您可以通过访问以下内容来访问 PDF:

http://www.mywebsite.com/sites/default/files/reports/2010_Audit_Summary_Report.pdf

但我希望通过以下 URL 访问相同的文件来清除此问题:

http://www.mywebsite.com/reports/2010_Audit_Summary_Report.pdf

我认为我可以做以下事情:

<rule name="MySpecialRule" stopProcessing="true">
    <match url="/sites/default/files/reports/2010_Audit_Summary_Report.pdf" />
    <action type="Rewrite" url="/reports/2010_Audit_Summary_Report.pdf" />
</rule>

但这不起作用。当然,上面的示例规则仅适用于一个 PDF,我希望它适用于同一目录中的所有 PDF。

这可能吗?

答案1

要匹配多个特定的 URL,您需要使用正则表达式,然后在操作中引用找到的字符串:

 <rule name="MySpecialRule" stopProcessing="true">
     <match url="/sites/default/files/reports/([_a-z0-9]+).pdf" />
     <action type="Rewrite" url="/reports/{R:1}.pdf" />
 </rule>

这里我假设你的文件名只包含字母、数字和下划线。我还没有测试过,但它应该能让你知道如何解决这个问题。

相关内容