我正在努力将Apache .htaccess重写转换为IIS重写。我想从一个目录重写到另一个目录。
示例:如果有人访问URI:/booklets/MyPDF.pdf
,则重写将使用/res/pdf/MyPDF.pdf
这是我到目前为止所做的:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Rewrite for booklets location" enabled="true">
<match url="^booklets/(.*).pdf" />
<action type="Rewrite" url="res/pdf/{R:1}.pdf" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
非常感谢任何帮助。
答案 0 :(得分:3)
除了您自己的答案,我建议您在正则表达式中的扩展名之前添加stopProcessing
属性和反斜杠点符号:
<rule name="Rewrite for booklets location" stopProcessing="true">
<match url="^booklets/(.*)\.pdf$" ignoreCase="true"/>
<action type="Rewrite" url="res/pdf/{R:1}.pdf"/>
</rule>
答案 1 :(得分:1)
在修补它之后,我刚从规则中删除enabled="true"
并将结束正则表达式$
添加到网址匹配中,现在它可以正常工作了!
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Rewrite for booklets location">
<match url="^booklets/(.*).pdf$" />
<action type="Rewrite" url="res/pdf/{R:1}.pdf" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>