Aurelia没有加载没有哈希的URL

时间:2017-02-12 00:23:17

标签: asp.net-core aurelia

我已经阅读了有关此问题的其他问题,答案似乎对我没有帮助。也许是因为我正在使用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;

2 个答案:

答案 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'}
    ]);

如果您对在您的网址中使用#感到满意,请不要担心更改推送状态设置