【问题标题】:IIS url rewrite - lowercase outbound rule condition for flash object/param urlsIIS url 重写 - flash 对象/参数 url 的小写出站规则条件
【发布时间】:2011-07-15 06:51:21
【问题描述】:

我有一个 .net 4.0 项目,并且正在使用 IIS 7.5 url 重写规则对所有 url 强制小写 - 入站和出站规则。我有一切功能,但对象参数标记值被降低:

    <object width="600" height="378" id="flash_258112502" type="application/x-shockwave-flash" data="/_resources/flash/videoplayer.swf">  
    <param value="rtmp://media.website.org/vod/mp4:20110302councilmeeting.f4v" name="serverurl"> 
</object>

Flash 服务器的这些 url 确实区分大小写,因此修改了它们的大小写功能。如何编写一个有针对性的条件来排除这些 url 被重写?

我的web.config重写出站规则如下,我尝试添加自定义标签以匹配/object或param但无济于事:

 <outboundRules rewriteBeforeCache="true">
    <!-- convert all links to lowercase -->
    <rule name="Outbound lowercase" preCondition="IsHTML" enabled="true">
      <match filterByTags="A, Script, CustomTags" customTags="object" pattern=".*[A-Z].*" ignoreCase="false" />
      <action type="Rewrite" value="{ToLower:{R:0}}" />
      <conditions logicalGrouping="MatchAny">
        <add input="{URL}" pattern="/workarea/" negate="true" />
        <add input="{URL}" pattern="media.website.org" negate="true" />
                    <add input="{URL}" pattern="^.*\.(ashx|axd|css|gif|png|js|flv|f4v)$" negate="true" /> 
      </conditions>
    </rule>
    <preConditions>
      <!-- Only process html files -->
      <preCondition name="IsHTML" logicalGrouping="MatchAny">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
      </preCondition>
    </preConditions>
            <customTags>
                <tags name="param">
                    <tag name="param" attribute="param" />
                </tags>
                <tags name="object" />
            </customTags>
  </outboundRules>

-我的第一篇 stackoverflow 帖子,谢谢!

【问题讨论】:

    标签: .net iis url-rewriting


    【解决方案1】:

    规则不应包含对象,因为您不希望它匹配并被小写

    <match filterByTags="A, Script" pattern=".*[A-Z].*" ignoreCase="false" />
    

    从这里开始

        <outboundRules>
            <rule name="Outbound LowerCase Rule">
                <match filterByTags="A" pattern=".*[A-Z].*" />
                <action type="Rewrite" value="{ToLower:{R:0}}" />
            </rule>
        </outboundRules>
    

    【讨论】:

    • 按指定删除对象标签不会阻止小写。 'Object' 最终出现在那里,试图确保我们实际上正在处理该标签,以便能够创建一个条件来否定小写规则。我不确定实际转换的是什么,因为我已将路径“media.website.org”和扩展名“.f4v”声明为规则否定符。
    • 我做了一个更简单的测试来验证它并按预期工作。我会将其分解为最简单的可能规则(例如,仅包括 A、脚本)并从那里开始。一次添加更多规则(包括否定规则)。
    • 运气不好。我几乎都试过了——我已经尝试了我能想象到的每一个想法和组合。
    • 从一条规则开始。那有什么作用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2014-10-27
    • 2011-04-21
    相关资源
    最近更新 更多