CNode

node.js 能否实现域名地址重写

Sszext2009发布于14 年前最后回复14 年前4 回复9333 浏览0 收藏

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

查看回复

回复 (4)

T
thynson#1·14 年前

你是想说跳转吗?

A
a272121742#2·14 年前

可以的,只需要在服务端配置一下。如果你用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);
}
X
xiaojue#3·14 年前
  • -在apache和nginx里配置也可以实现一样的效果……
参与回复
登录后即可参与回复。登录