【发布时间】:2016-01-14 17:15:01
【问题描述】:
所以我一直在为我的 Angular.js 应用程序和 IIS 重写而苦苦挣扎。我的网站位于http://server/jwb/ 文件夹中。我让它重写到 /jwb/ 中的 index.html 文件,并且我有一个 index.html 的内部。问题是当我导航到http://server/jwb/parties/12345 时,通过角度完成时看起来很好,但是当我在浏览器上点击刷新时,我丢失了 CSS 和 javascript。我查看控制台,它们被重写为http://server/jwb/parties/js/nameoffile.js 等。我想要做的是告诉 IIS 重写始终查看它们真正驻留的 js、css 和 img 文件,它们位于http://server/jwb/js、http://server/jwb/css和http://server/jwb/img等。
将为我完成此任务的重写规则是什么?有没有比使用重写规则更好的方法?
我目前在我的 web.config 中有这个:
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^index\.html" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="." ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.html" />
</rule>
</rules>
但是,这仍然会做一些奇怪的事情。我什至用相对路径做了一些测试,这就是我发现的:
我们现在已经测试了以下引用文件的方法:
<link rel="stylesheet" href="css/bootstrap.css" />
或
<link rel="stylesheet" href="/css/bootstrap.css" />
或
<link rel="stylesheet" href="./css/bootstrap.css" />
或
<link rel="stylesheet" href="../css/bootstrap.css" />
而且它们都不起作用。下面显示了当我们使用每个文件来引用我们的应用程序的路径时会发生什么。为了论证,我们的路径如下:
index --> http://10.34.34.46/jbvdev/calendar
documents --> http://10.34.34.46/jbvdev/documents/BC498484
caseNotes --> http://10.34.34.46/jbvdev/casenotes/CV/LA%20/2081/BC498484
【问题讨论】:
-
尝试添加基本标签或使用页面本身资源的绝对路径
-
<link rel="stylesheet" href="/css/bootstrap.css" />实际上是一个绝对路径...在站点根目录中寻找 css 目录。前导/告诉浏览器从根目录或任何定义为根目录的基本标记开始
标签: javascript css angularjs iis