IIS url重写 - 错误地重写了css和js

时间:2011-10-02 18:57:54

标签: javascript css asp.net iis url-rewriting

我的urlrewrites存在问题 - 只要我指向要重写的页面,它就无法显示,因为它也将规则应用于css&在我的网页中引用的js文件。

为了尝试解决这个问题,我为css和js设置了一个完全限定的路径 - 这在我尝试访问浏览器挂起的重写页面的任何页面上都没有应用重写。

有没有人遇到类似的东西,如果有的话,你有解决方案吗?感谢任何帮助。试图在网站上查找类似的问题但到目前为止没有任何帮助。

<rewrite>
<outboundRules>
<rule name="OutboundRewriteUserFriendlyURL1" preCondition="ResponseIsHtml1" stopProcessing="true">
<match filterByTags="A, Form, Img" pattern="^(.*/)myapplicationname/Index\.html\?team=([^=&amp;]+)$" />
<action type="Rewrite" value="{R:1}team/{R:2}/" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
<rules>
<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
<match url="^myapplicationname/Index\.html$" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^([^=&amp;]+)=([^=&amp;]+)$" />
</conditions>
<action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" />
</rule>
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^([^/]+)/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="Index.html?{R:1}={R:2}" appendQueryString="false" />
</rule>
</rules>
</rewrite>

在我的网页中:

<script src="/myapplicationname/Scripts/jquery-1.4.1.js" type="text/javascript">    </script>
<link href="/myapplicationname/Styles/MainStyle.css" rel="stylesheet" type="text/css" />

它正在对这些进行重写,并试图找到/myapplicationname/Team/Styles/MainStyle.css和JS文件类似。

1 个答案:

答案 0 :(得分:4)

尝试逐个删除导致问题的规则。现在为该规则添加一个条件:

    <rule name="Some rule">
      ...
      <conditions logicalGrouping="MatchAny">
          <add input="{URL}" pattern="^.*\.(ashx|axd|css|gif|png|jpg|jpeg|js|flv|f4v)$" negate="true" /> 
      </conditions>
    </rule>

这将避免在以.js,.css等

结尾的文件上运行规则