我已经阅读了有关此问题的其他问题,答案似乎对我没有帮助。也许是因为我正在使用ASP CORE。如果我导航到http://localhost:5000/#home,路由工作正常。但是当我删除主题标签时,页面不会加载。这是我的路由代码:
import {Redirect, NavigationInstruction, RouterConfiguration} from 'aurelia-router';
export class App {
configureRouter(config: RouterConfiguration): void {
config.title = 'xxxx';
config.options.hashChange = false;
config.options.root = '/';
config.map([
{ route: ['home'], name: 'home', moduleId: 'views/home' },
{ route: '', redirect: 'home'}
]);
}
}
我也试过添加这个:
config.options.pushState = true;
config.options.hashChange = true;
答案 0 :(得分:1)
如果您使用的是asp.net核心,则需要设置服务器端路由以将您的请求重定向到index.html。在Configure方法的Startup.cs中,您需要执行以下操作:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404
&& !Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path = "/index.html";
await next();
}
});
app.UseStaticFiles();
}
答案 1 :(得分:0)
您可以将多条路线设置为同一个模块,例如
,而不是重定向config.map([
{ route: ['home'], name: 'home', moduleId: 'views/home' },
{ route: '', name: 'home2', moduleId: 'views/home'}
]);
如果您对在您的网址中使用#感到满意,请不要担心更改推送状态设置