在我的 MEAN SPA 应用程序中,我想使用其他参数将所有网址请求重定向到索引。例如,当用户键入http://localhost:3003/
时,应调用索引页。当用户输入http://localhost:3003/game/playstation/ps4
时,它还应使用game, palystation, ps4
之类的额外参数调用索引页,但在没有额外参数的情况下重定向到索引。我的代码如下:
app.use(function(req, res, next) {
// get the url without main domain address
var original_url = req.originalUrl;
// convert string url to array
var url_part = original_url.split('/');
// remove first array, bcz first is always ''
url_part.shift();
// check if url is main url request without any parameter
if( url_part[0] !== '' ) {
// if not, then store all url_part array
req.request_url = url_part;
// redirct to main '/' call
// when it redirect to main url, then req.request is empty
res.redirect('/');
}
next();
});
app.get('/', function( req, res) {
// here req.request_url is always 'undefined'
console.log("req.request_url : ", req.request_url);
return res.render('index.ejs', {
url: req.request_url
});
});
修改
我必须重定向到索引路由,而不是其他任何路由,因为在我的 SPA 应用程序中,我只是加载我的索引路由,默认< strong> js,css和其他,其他所有人都会来自 api 。
提前致谢。
答案 0 :(得分:1)
你可以这样做,两者都会映射到同一个函数,但会设置参数,如果它从'/'路径映射
,则为nullvar indexPageFunc = function(res, req){
var type = req.param('type'); // game or null
var system = req.param('system'); // playstation or null
var version = req.param('version'); // ps4 or null
res.render('index.ejs');
}
app.get('/', indexPageFunc);
app.get('/:type/:system/:version, indexPageFunc);
答案 1 :(得分:0)
你不能这样做。将发送302重定向到浏览器,用户向您的服务器发出新的单独请求。
您可以为所有路线返回相同的响应
app.get('*', function(req, res) {
// get the url without main domain address
var original_url = req.originalUrl;
// convert string url to array
var url_part = original_url.split('/');
// remove first array, bcz first is always ''
url_part.shift();
res.render('index.ejs', {
url: url_part
});
});
答案 2 :(得分:0)
您有两种选择:重定向到另一个网址并包含GET参数。
var express = require('express'),
app = express();
app.use(function(req, res, next) {
var url_part = req.originalUrl.split('/');
console.log('' + req.originalUrl + ' => ' + url_part);
url_part.shift();
if( url_part[0] !== '' ) {
//You could add as GET parameters, but it will be shown to the user
res.redirect('/?request_url=' + url_part);
}
next();
});
app.get('/', function (req, res) {
// here req.request_url is always 'undefined'
console.log("req.request_url : ", req.request_url);
return res.json({
url: req.request_url
});
});
app.listen(8080);
或者您必须找到重写URL的方法,并执行POST请求。