使用Aurelia CLI 0.32,我有这个路由配置
public configureRouter(config: RouterConfiguration, router: Router): void {
this.router = router;
config.options.pushState = true;
config.options.root = '';
config.map([
{ route: ['', 'home'], name: "home", moduleId: 'home/index', title: 'Main page' },
{ route: 'editroute/:id', name: "editroute", moduleId: 'edit/index', title: 'Edit Page' }
]);
config.fallbackRoute('');
}
使用链接
<a route-href="route: editroute; params.bind: {id:item.id}">Edit ${item.name}</a>
我可以导航到路线。但是在浏览器中刷新页面会导致错误,如屏幕截图所示
它在asp.net上运行,并且有一个重写规则来支持pushstate
<rewrite>
<rules>
<rule name="Main Rule" 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="{URL}" matchType="Pattern" negate="true" pattern=".*\/((api|signalr)\/.*|loaderio.*)" ignoreCase="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
我做错了什么?
由于
编辑:此错误仅发生在具有routeparameters
的路线上答案 0 :(得分:3)
为了让您在使用深层URL时服务器端页面刷新工作,您必须修改aurelia_project/aurelia.json
以在捆绑模块时使用绝对路径:
{
"build": {
"targets": [
{
// ...
"baseUrl": "/scripts",
"useAbsolutePath": true
}
],
// etc...
另一个可能无需更改但包含相同属性的地方是:
{
"platform": {
// ...
"baseUrl": "/scripts",
"useAbsolutePath": true
}
另外,请确保测试Internet Explorer 11,因为它比其他浏览器更挑剔。
当然,如前所述,您还必须确保为其他资源使用绝对路径(/scripts/vendor-bundle.js
,字体路径等。)
答案 1 :(得分:0)
第一步是尝试将SecuritySOAPHeader
的相对路径更改为绝对scripts/vendor-bundle.js
如果它无法解决您的问题 - 它至少会阻止为每条路线下载所有脚本( - :
规则有错。由于你的html要求一个带有相对路径的脚本 - 服务器查找&#34;目录&#34;并且没有文件。所以它放弃了你的index.html(或者网站根目录服务的任何东西)而不是脚本。