node.js 能否实现重写地址,cnodejs.org/user/youname 能重写成这样,cnodejs.org/youname更好记
你是想说跳转吗?
可以的,只需要在服务端配置一下。如果你用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请求:
可以的,只需要在服务端配置一下。如果你用express,请配置2个key对应一个value。 如果是你用rrestjs,那就更好办了。还是跟你说说原理吧。
假设你要进入的网站是http://cnodejs.org/,后面/user/youname或者/yourname称之为你的请求路径,url请求路径一定是对应你后台的某个文件的某个方法的,例如java中/crm/user!index.html就是向后台的crm模块请求user文件的index方法。
/user/youname
/yourname
/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); }
不错,这也是一种方式
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
你是想说跳转吗?
不错,这也是一种方式