问题:项目打包发布成功之后,进入页面路由跳转正常。但是如果F5刷新页面会报404错误。
angular版本号:5.0.3
打包命令:ng build --prod --aot
服务器环境:win10 iis7.0
原因分析:
angular自带的路由功能,按照平常的发布经验。比如http://**.******.***:8088/app/admin/index这个站点路径,按照服务器的理解。会访问站点根目录下面的app/admin/hostDashboard的文件,但是其实我们要访问的是angular的路由。其实并没有这个文件夹。所以会报 404 - Page Not Found。我们要如何让服务器知道我们真正的访问行为呢?
解决方案:
1、我们要安装一个iis 上面的URL重写工具
iis上面搜索安装:
官网安装:IIS URL重写工具
2、安装完之后,在我们的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>
我按照以上步骤重新配置了一边,再重新打开页面F5页面刷新成功!不再报404错误
其实还有几种解决方案,我有空在写吧.......