nodejs 重定向

[javascript]  view plain  copy
  1. var express = require('express');  
  2. var app = express();  
  3. app.get('/'function (req, res) {  
  4. //res.redirect('hello');  
  5. //res.redirect('www.baidu.com');  
  6. res.redirect(302, 'http://www.baidu.com');  
  7. });  
  8.   
  9. app.listen(3000);  
  10. console.log("http://localhost:3000");  


在路径加上子目录

比如http://121.41.XX.102:3000/test  可以控制对test子目录访问的跳转,其他目录不会跳转


再比如下面

[javascript]  view plain  copy
  1. var express = require('express');  
  2. var app = express();  
  3. app.get('/test'function (req, res) {  
  4. //res.redirect('hello');  
  5. //res.redirect('www.baidu.com');  
  6. res.redirect(302, 'http://www.baidu.com');  
  7. });  
  8. app.get('/'function (req, res) {  
  9.   
  10. res.redirect(302, 'http://www.baidu.com');  
  11. });  
  12. app.listen(3000);  
  13. console.log("http://localhost:3000");  

只对根目录和  /test 路径跳转 其他路径

输出

Cannot GET /test2

参考

关于nodejs域名重定向问题

发布时间:2016-10-22作者:起阳阅读(154)

弄了几天终于用node实现了类型百度的那种域名重定向。输入baidu.com,他会自动跳转到https://www.baidu.com。(这里不说https的问题)。前端能实现这个东西,为了b格高一点,还是选择在服务器端处理。


输入baidu.com

QQ20161022-2@2x.png

自动跳转到www.baidu.com

QQ20161022-3@2x.png

                                

就是想要达到这种想过。最开始想到的是域名重定向,网上搜索了一下,基本上都是说的使用res.redirect()这个方法。具体的怎么做没有说。只有自己慢慢研究了。先就是把这个方法直接加到node里面去

[js]  view plain  copy
  1. app.get('/*',function(req,res){  
  2.     res.redirect(302, 'http://www.meetqy.com/');  
  3. });  

直接这样写的最后浏览器报错。

QQ20161022-1@2x.png

这个错误很低级。当时是不知道的。每次进入页面的时候,node就去执行

[js]  view plain  copy
  1. res.redirect(302, 'http://www.meetqy.com/');  

然后就一直重定向到这个链接。每次链接还都一样,就报错了。后来想了个办法获取请求地址。使用req.hostname。可以获取到。

[js]  view plain  copy
  1. app.get('/*',function(req,res){  
  2.     if(req.hostname == 'meetqy.com'return res.redirect(302, 'http://www.meetqy.com/');  
  3. });  

这样是可以解决这个域名重定向的问题的。但是后面如果你要写接口,或则路由什么的。根本进去不了。全部被这个重定向过去了。最后接口就报404错误。假如有个这种的。

[js]  view plain  copy
  1. app.get('/about',function(req,res){  
  2.     res.render('about');  
  3. });  

这个方法就进去不到,404。都走到这里了肯定不能放弃啊,再想想其它的。发现又一个app.use()这个方法。说下我对这个方法的理解

[js]  view plain  copy
  1. app.use('/*',function(req,res,next){  
  2.     console.log(req.hostname);  
  3.     next();  
  4. });  

把这个方法放在所有路由/接口的最前面,都会先走这个方法,然后在执行它后面的方法。一定要加next(),不然浏览器会一直处于等待响应状态。后面的方法也不会执行。

我试过放在最后面发现如果前面有满足条件的接口/路由,就进不去。(可能是因为javascript是单线程的原因吧,代码顺序执行的。)

最后实现这个重定向的代码:

[js]  view plain  copy
  1. app.use('/*',function(req,res,next){  
  2.     if(req.hostname == 'meetqy.com'return res.redirect(302, 'http://www.meetqy.com/');  
  3.     next();  
  4. });  

就这样3行代码实现了域名重定向的功能。

以及

http://www.cnblogs.com/duhuo/p/5609127.html

http://songkang666.iteye.com/blog/1859257

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值