IIS 8.0没有查看子文件夹

时间:2017-02-14 15:22:45

标签: angular iis webpack iis-8 angular-cli

我有一个使用IIS 8.0 like so托管在另一个网站中的应用程序(如果相关,它是使用CLI和Webpack的Angular 2项目)。我在https://example.org/MyApp上托管我的应用。不幸的是,当我尝试运行该站点时,我为每个引用的文件收到404错误。当浏览器实际托管在https://example.org/MyApp/file.jpg时,浏览器正试图在https://example.org/file.jpg上查找我的文件。有没有办法告诉IIS在子目录而不是根文件夹中搜索这些文件?

作为一个注释,Webpack使用相关文件路径进行所有捆绑,因此将这些文件路径更改为绝对路径是不可行的。

2 个答案:

答案 0 :(得分:0)

修改index.html以设置<base href>

例如<base href="/MyApp/">

答案 1 :(得分:0)

也许我在这里打败一匹死马,但这似乎很可靠:

基本上是设置base-href和IIS-url-rewrite的混合。

  1. 使用--base-href /myAppDir/
  2. 构建ng-app
  3. 确保URL重写模块可用于您的IIS网站
  4. 将web.config文件添加到网站的根文件夹中。
  5. 编辑3.中的文件,例如:
<configuration>
    <system.webServer>
      <rewrite>
        <rules>
          <rule name="Angular Routes" 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="/MyApp/" />
            <!--<action type="Rewrite" url="/" />-->
          </rule>
        </rules>
      </rewrite>
    </system.webServer>
    </configuration>
  1. 您很可能希望使用另一个正则表达式作为match-url来满足您网站的需求。

来自: https://devblogs.microsoft.com/premier-developer/tips-for-running-an-angular-app-in-iis/