我试图解决在IIS中重写经典ASP应用程序的URL后无法在浏览器中加载CSS和图像文件的问题。我已经找到了解决方案,在开发工具的网络选项卡中显示文件已加载(状态代码:200 OK)和css和图像url现在指向正确的文件夹-但文件内容不只是得到加载。以下是基于解决方案(How to fix URL Rewriting for links inside CSS files with IIS7)的web.config:
<rule name="Rewrite css URLs" preCondition="IsCSS" stopProcessing="true">
<match pattern="localhost/asp-app/data/styles" />
<action type="Rewrite" value="localhost/asp-app/styles" />
</rule>
<preConditions>
<preCondition name="IsCSS">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="text/css" />
</preCondition>
</preConditions>
</outboundRules>
<rules>
<rule name="Rewrite-to-http-verbs-handler">
<match url=".*" />
<action type="Rewrite" url="/asp-app/routes/router2.asp" />
</rule>
</rules>
</rewrite>
而且即使我在head部分的css-link标签中使用了绝对url
<link rel="stylesheet" href="http://localhost/asp-app/styles/test.css">,
CSS不会加载。和同样的是与图像,即使是完整的网址是不工作,即.
<img src="http://localhost/asp-app/images/konsultaatio.jpg" />
有什么办法解决吗?
2条答案
按热度按时间n1bvdmb61#
在浏览器中直接访问改写后的URL时,文件是否能正常加载?您需要检查CSS文件和图像所在的文件夹是否具有访问权限,以确保IIS用户可以正常读取文件。
6ie5vjzr2#
我终于找到了解决这个问题的办法。它基于以下内容:https://community.progress.com/s/article/Sitefinity-backend-not-working-correctly-when-using-rewrite-rules
因此,解决这个问题所需要的是添加一个规则,以防止css,图像和js文件与asp-file重写同时加载。请注意,
action type=“无”
必须在ASP文件重写规则之前。
当我在浏览器工具的网络标签中看到css,js甚至图像响应原始数据与asp文件中加载的html内容完全相同时,我意识到了解决方案。因此,必须防止css、js和图像文件与asp-file规则沿着被自动重写。
因此,我也可以跳过原问题中给出的outboundRules和preConditions--它们是不需要的。