URL 用相对 URL 重写
URL Rewrite with Relative URLs
我很可能遗漏了一些东西。我在这个很棒的 post 上找到了这个 URL 重写示例:http://marisks.net/2017/05/14/changing-static-resource-urls-to-cdn-urls-with-url-rewrite/
我的设置是相同的。我的代码中有相对 URLs,我想将它们即时重写为指向我的 CDN。
<outboundRules>
<clear />
<rule name="CDN" preCondition="CheckHTML" enabled="false" stopProcessing="true">
<match filterByTags="Img, Link, Script, CustomTags" customTags="Video" pattern="(^(?!www\.|(?:http|ftp)s?:\/\/|[A-Za-z]:\|\/\/).*\.(jpg|jpeg|png|js|css|mp4).*)" />
<action type="Rewrite" value="http://cdn.example.com{R:1}" />
<conditions logicalGrouping="MatchAll">
</conditions>
</rule>
<preConditions>
<preCondition name="CheckHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
<customTags>
<tags name="Video">
<tag name="source" attribute="src" />
</tags>
</customTags>
</outboundRules>
效果很好。 除非我需要微调对特定文件夹的重写。
我知道这听起来很简单,但是当我查看上面脚本中的正则表达式时 - 我看不出我可以在哪里对我的亲戚 URL 中的单词特别设置任何类型的限制。显然我需要在 Regex 上更加努力地工作。但我们将不胜感激。
我只需要捕获某些文件夹的相关链接,例如 /media 或 /css(“/media/media.mp4”或“/css/base.css”) .
我相信我已经解决了这个问题。至少,它适用于我设置为重写的文件夹并忽略我未指定的文件夹。我会再做一些测试,但这暂时有效。
<rule name="CDN" preCondition="CheckHTML" enabled="true" stopProcessing="true">
<match filterByTags="Img, Link, Script, CustomTags" customTags="Video" pattern="(^(\/(media|css)+)*\/.*)" />
<action type="Rewrite" value="http://cdn.example.com{R:0}" />
<conditions logicalGrouping="MatchAll">
</conditions>
</rule>
PreConditions 和 Tags 始终相同。
更新了正则表达式:
(^\/media\/.*)|(^\/css\/.*)
我很可能遗漏了一些东西。我在这个很棒的 post 上找到了这个 URL 重写示例:http://marisks.net/2017/05/14/changing-static-resource-urls-to-cdn-urls-with-url-rewrite/
我的设置是相同的。我的代码中有相对 URLs,我想将它们即时重写为指向我的 CDN。
<outboundRules>
<clear />
<rule name="CDN" preCondition="CheckHTML" enabled="false" stopProcessing="true">
<match filterByTags="Img, Link, Script, CustomTags" customTags="Video" pattern="(^(?!www\.|(?:http|ftp)s?:\/\/|[A-Za-z]:\|\/\/).*\.(jpg|jpeg|png|js|css|mp4).*)" />
<action type="Rewrite" value="http://cdn.example.com{R:1}" />
<conditions logicalGrouping="MatchAll">
</conditions>
</rule>
<preConditions>
<preCondition name="CheckHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
<customTags>
<tags name="Video">
<tag name="source" attribute="src" />
</tags>
</customTags>
</outboundRules>
效果很好。 除非我需要微调对特定文件夹的重写。 我知道这听起来很简单,但是当我查看上面脚本中的正则表达式时 - 我看不出我可以在哪里对我的亲戚 URL 中的单词特别设置任何类型的限制。显然我需要在 Regex 上更加努力地工作。但我们将不胜感激。
我只需要捕获某些文件夹的相关链接,例如 /media 或 /css(“/media/media.mp4”或“/css/base.css”) .
我相信我已经解决了这个问题。至少,它适用于我设置为重写的文件夹并忽略我未指定的文件夹。我会再做一些测试,但这暂时有效。
<rule name="CDN" preCondition="CheckHTML" enabled="true" stopProcessing="true">
<match filterByTags="Img, Link, Script, CustomTags" customTags="Video" pattern="(^(\/(media|css)+)*\/.*)" />
<action type="Rewrite" value="http://cdn.example.com{R:0}" />
<conditions logicalGrouping="MatchAll">
</conditions>
</rule>
PreConditions 和 Tags 始终相同。
更新了正则表达式:
(^\/media\/.*)|(^\/css\/.*)