部署到 IIS 后,我发现我的路由都不起作用,因此我研究然后发现这个问题说你必须添加一个重写web.config
,我做了,路由现在正在工作。
这是我在开发模式下工作的一些路线,但在生产中:
const appRoutes: Routes = [
{ path: '', component: HomeComponent },
{ path: 'manage', component: ManageComponent },
{ path: 'manage/products', component: ProductComponent },
{ path: 'manage/products/:action/:id', component: ProductComponent },
{ path: 'manage/companies', component: CompanyComponent },
];
我做了什么web.config
:
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*"/>
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true"/>
</conditions>
<action type="Rewrite" url="/"/>
</rule>
</rules>
</rewrite>
</system.webServer>
那么真正的问题是什么?当我刷新/重定向页面时会出现问题。经过一个小时的研究发现我写的规则web.config
总是返回index.html
,这就是我进入Uncaught SyntaxError: Unexpected token <
以下文件的原因:
inline.bundle.js:1
polyfills.bundle.js:1
styles.bundle.js:1
vendor.bundle.js:1
main.bundle.js:1
你有什么建议来解决这个问题?
更新:通过manage
从路由中删除修复了没有参数的路由的问题,但对于包含参数的路由,问题仍然存在。