在Angular URL中引用路由链接时,如何避免“ 404-文件或目录未找到。”

时间:2019-12-26 21:29:41

标签: angular iis

在Angular中引用路由链接时,如何避免“ 404-文件或目录未找到。”

例如,如果您导航到页面,则会显示以下URL:

http://www.semiwebs.com/angular-semi/sagesoftware

,并且有效。但是,如果您单独在浏览器中键入此URL,则会出现错误

  

404-找不到文件或目录。

在使用localhost的开发计算机上,通过网站的导航均有效,并且http://localhost:4200/sagesoftware也可行。

我缺少哪些设置阻止了IIS7服务器上的导航

1 个答案:

答案 0 :(得分:0)

Angular是一个单页面应用程序,可在客户端处理路由。您将需要在服务器上添加rewrite规则,以将所有路由重定向到index.html页面。

发生的事情是您的服务器正在尝试查找不存在的路径http://www.semiwebs.com/angular-semi/sagesoftware。您需要将其传递给index.html,以便角度知道要显示什么组件。

我在网上找到的示例:

web.config

<rewrite>
    <rules>
        <rule name="SPA Routes" stopProcessing="true">
        <!-- match everything by default -->
        <match url=".*" />
        <conditions logicalGrouping="MatchAll">
            <!-- unless its a file -->
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <!-- or a directory -->
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <!-- or is under the /api directory -->
            <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
            <!-- list other routes or route prefixes here if you need to handle them server side -->
        </conditions>
        <!-- rewrite it to /index.html -->
        <action type="Rewrite" url="/index.html" />
        </rule>
    </rules>
</rewrite>
SPA的

IIS规则