IIS重写在刷新时在Angular应用程序中丢失路径

时间:2016-01-13 16:31:32

标签: javascript css angularjs iis

所以我一直在努力使用我的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/jshttp://server/jwb/csshttp://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" />

OR

<link rel="stylesheet" href="/css/bootstrap.css" />

OR

<link rel="stylesheet" href="./css/bootstrap.css" />

OR

<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

enter image description here

1 个答案:

答案 0 :(得分:2)

我有完全相同的问题...并且在完成所有添加基础ref之后,其他地方建议的东西仍然具有完全相同的问题。

是的,请添加基础参考&#34; /&#34;在你index.html或任何页面是你的角应用程序的基础。然后你需要恢复到良好的状态。正则表达式......

我玩了一段时间才能在正确的位置找到正确的位置,然后捕捉到正确的部分....所以你需要为它调整它...

对我来说,我的路径是

  1. /Content/blah.wwith html文件和css以及
  2. /Scripts/some.js等我的javascript
  3. 正在发生的事情只是刷新了应用程序路径在/ Content或/ Scripts之前插入...下面是最终为我修复它的规则集...

    <rewrite>
      <rules>
        <rule name="Removevesseldetailsscripts" stopProcessing="true">
          <match url="^(.*[/])Scripts/(.*)$" />
          <conditions>
          </conditions>
          <action type="Redirect" url="Scripts/{R:2}" />
        </rule>
        <rule name="Removevesseldetailscontent" stopProcessing="true">
          <match url="^(.*[/])Content/(.*)$" />
          <conditions>
          </conditions>
          <action type="Redirect" url="Content/{R:2}" />
        </rule>
        <rule name="Main Rule" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
    

    R:2位是将角度路径放回到正确位置的URL中,显然还有R:1,它捕获了实际路径的根...

    有一个游戏,让我知道我是否可以提供更多帮助!祝你好运!!!