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

Posted

技术标签:

【中文标题】IIS url 重写 - css 和 js 被错误地重写【英文标题】:IIS url rewrite - css and js incorrectly being rewritten 【发布时间】:2011-11-29 12:30:55 【问题描述】:

我的 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:1team/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】:

通过一一删除来尝试找出导致问题的规则。现在为该规则添加一个条件:

    <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 等结尾的文件运行规则。

【讨论】:

以上是关于IIS url 重写 - css 和 js 被错误地重写的主要内容,如果未能解决你的问题,请参考以下文章

IIS URL重写不正常404错误

IIS5.1设置URL重写?

IIS URL 将模块 url 重写为小写

CORS 使用带有 ARR 和 URL 重写的 IIS 作为反向代理

IIS 重写规则以将查询字符串添加到 ASP.net 页面中的 .css 和 .js 引用?

IIS URL重写