Jak*_*ith 1 routing bootstrapping angular
在我的Angular 4应用程序中,如果我第一次访问该站点(即localhost:4200/projects)时在URL中键入非根路径,则会引导我的应用程序,并在浏览器的屏幕上呈现正确的组件。
但是,一旦我通过IIS为站点提供服务,如果转到,则会http://<my-domain>.com/projects收到404错误(不是来自我的应用程序),并且该应用程序永远不会启动。
如何在首次访问生产环境中的站点时获得对非根目录路径的访问,以识别该应用程序是Angular应用程序,并为根目录或更高版本的任何路径引导该应用程序?
在您的应用程序的已部署版本上,托管它的Web服务器仅知道如何提供它所看到的一个html文件(index.html),该文件对应于您的根路径。例如,您尝试直接访问 http:// url-to-your-app / art的第二个服务器将抛出未找到的404,因为它无法识别出它可以作为资源的路径。
对于IIS,最简单的解决方法是将其添加到web.config中:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="/index.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这样做是指示IIS每当检测到404时都用您的index.html进行响应。
另一种方法是设置URL重写,但这需要安装和配置重写模块,与上述解决方案相比,我认为这太麻烦了。
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |