web.config从一个目录重写到另一个目录

时间:2014-05-01 14:19:43

标签: iis url-rewriting web-config

我正在努力将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>

非常感谢任何帮助。

2 个答案:

答案 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>