为什么本地主机绝对URL可以工作但可以发布

时间:2019-10-03 04:34:47

标签: angular angular8

在我的localhost:4200中,直接输入如下所示的绝对URL正常。

http://localhost:4200/blogs/1
http://localhost:4200/blogs/2
http://localhost:4200/blogs/3

但是在发布到IIS/Azure CDN之后,我遇到了以下错误。

  

404-找不到文件或目录。您正在寻找的资源   可能已被删除,更名或暂时被删除   不可用。

通过routerLink <span routerLink="/blogs/1">Blog1</span>浏览可以正常工作。

“我的路由器”显示在下方

{ path: 'blogs', component: BlogsComponent },
{ path: 'blogs/:id', component: BlogComponent }

我在这里想念什么?

2 个答案:

答案 0 :(得分:0)

您需要在发布的文件夹中添加 web.config 文件。

赞:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="AngularJS" 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>
  </system.webServer>
</configuration>

答案 1 :(得分:0)

您的IIS必须配置为将所有从basehref开始的URL重定向到index.html页面。

在加载了文档(index.html和随后的main.js)之后,Angular路由器开始工作。 您的IIS可能正在尝试自行处理完整的地址。 您需要告诉它使用

重定向所有网址
https://your-site/**

到您的index.html。