在Angular中引用路由链接时,如何避免“ 404-文件或目录未找到。”
例如,如果您导航到页面,则会显示以下URL:
http://www.semiwebs.com/angular-semi/sagesoftware
,并且有效。但是,如果您单独在浏览器中键入此URL,则会出现错误
404-找不到文件或目录。
在使用localhost的开发计算机上,通过网站的导航均有效,并且http://localhost:4200/sagesoftware
也可行。
我缺少哪些设置阻止了IIS7服务器上的导航
答案 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规则