我有一个Azure网站托管用于Windows Phone应用程序中用于Live Tiles的一组图像

Live Tile图像请求对URL中的比例(和其他)数据进行编码,如下所示(我认为,对此文档的缺乏非常严重)

http://example.com/Images/sunny.png?ms-scale=100&ms-contrast=standard&ms-lang=en-us

我想改写成

http://example.com/Images/sunny.scale-100.png

.scale-xxx值与查询字符串中的值匹配的地方

最佳答案

经过大量搜索后,我发现了

<system.webServer>
    <rewrite>
      <rules>
        <rule name="SpecificRewrite" stopProcessing="true">
          <conditions>
              <add input="{QUERY_STRING}" pattern=".*ms-scale=(\d+).*"  />
          </conditions>
          <match url="^Images/(.*).png.*" />
          <action type="Rewrite" url="/Images/{R:1}.scale-{C:1}.png" />
        </rule>
      </rules>
    </rewrite>
</system.webServer>


这会将查询字符串添加到匹配项中(组引用为C:1)

<add input="{QUERY_STRING}" pattern=".*ms-scale=(\d+).*"  />


这是实际的匹配(组称为R:1)

<match url="^Images/(.*).png.*" />


这是重写规则

<action type="Rewrite" url="/Images/{R:1}.scale-{C:1}.png" />


有用的参考


URL Rewrite Module Configuration Reference
Debug and troubleshoot rewrite rules easily


您可以在Azure网站管理门户的“配置”部分中打开“失败的请求跟踪”,文件以/LogFiles/<SiteName>/结尾

关于c# - 如何使用查询字符串中的数据重写Azure图像URL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24872423/

10-16 23:50