如何为express指定一个catchall或实际上是一个catchmost,以便当用户在实际包含在应用程序包中的页面上选择刷新时,GET不会失败。
home.html
<a href="profile">profile</a>app.js
config.map([
{ route: ['', 'home'], name: 'home', moduleId: 'home' },
{ route: ['profile'], name: 'profile', moduleId: './profile/profile'}
]);如果我单击profile链接,URL将显示localhost://profile,页面不执行GET即可正确呈现,因为所请求的资源已捆绑在初始GET中。但是假设我使用localhost://profile刷新页面,然后它向服务器发出对该页面的GET请求。
如果在服务器上指定如下内容:
app.use('/', express.static(__dirname));
app.use('/profile', express.static(__dirname));它工作正常。我期待着某种类型的捕获所有格式,这样我就不必为捆绑了所有路由的应用程序添加所有可能的路由。类似于:
app.use('/*', express.static(__dirname));然后执行以下操作来捕获另一个应用程序的GET
app.use('/othercoolapp/*', express.static(__dirname)+'/othercoolapp/');但它不起作用。
发布于 2017-02-27 09:04:46
您遇到的这个问题适用于每个启用了pushState路由的单页面应用程序框架和库。
在引导Express服务器的文件中的app.listen或等效代码行上,添加类似以下内容:
app.get('*', function(request, response){
response.sendFile(path.join(__dirname + '/index.html'));
});一般的想法是,这个通用的通配符路由将捕获所有的URL请求并发送index.html文件。这允许Aurelia处理自己的路由。
https://stackoverflow.com/questions/42464509
复制相似问题