node.js 能否实现重写地址,cnodejs.org/user/youname 能重写成这样,cnodejs.org/youname更好记
回复 (4)
T
你是想说跳转吗?
A
可以的,只需要在服务端配置一下。如果你用express,请配置2个key对应一个value。 如果是你用rrestjs,那就更好办了。还是跟你说说原理吧。
nodejs也是这样的,查阅nodejs-api或者一些文章,不难发现,请求路径是可以通过url.path获取的,通过解析path,能获取
/user/youname或者/yourname的字符串,你只要将这2个请求对应到同一个方法即可。例如我想要自动分配url请求:
var paths = req.url.substring(1).split(/\/|!|\.|\?/);
paths[2] = paths[2] || 'main';
paths[1] = paths[1] || 'index';
paths[0] = paths[0] || 'crm';
require(__dirname + paths[0] + '/' + paths[1])[paths[2]](req, res);
此时我请求/crm/user!index.html时,他将映射到我后台主目录下的crm文件夹下的user文件里的index方法。如此这般,要让/index也请求到这个方法,只需要代码:
if( req.url=='/index'){
require(__dirname+'crm'+'/'+'user')['index'](req,res);
}
X
- -在apache和nginx里配置也可以实现一样的效果……
A
引用 xiaojue在apache和nginx里配置也可以实现一样的效果……
不错,这也是一种方式
参与回复
登录后即可参与回复。登录