node.js 能否实现域名地址重写
发布于 12 年前 作者 szext2009 8737 次浏览 最后一次编辑是 8 年前

node.js 能否实现重写地址,cnodejs.org/user/youname 能重写成这样,cnodejs.org/youname更好记

4 回复

你是想说跳转吗?

可以的,只需要在服务端配置一下。如果你用express,请配置2个key对应一个value。 如果是你用rrestjs,那就更好办了。还是跟你说说原理吧。

假设你要进入的网站是http://cnodejs.org/,后面/user/youname或者/yourname称之为你的请求路径,url请求路径一定是对应你后台的某个文件的某个方法的,例如java中/crm/user!index.html就是向后台的crm模块请求user文件的index方法。

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);
}
  • -在apache和nginx里配置也可以实现一样的效果……

不错,这也是一种方式

回到顶部