sub-domain.js
6.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/**
* 匹配subdomain
* @author: 杨延青<yanqing.yang@yoho.cn>
* @date: 2016/6/16
*/
'use strict';
const querystring = require('querystring');
const _ = require('lodash');
const helpers = global.yoho.helpers;
const utils = '../../utils';
const listParamsProcess = require(`${utils}/list-params-process`);
module.exports = () => {
return (req, res, next) => {
if (req.hostname === 'activity.yoho.cn') {
// 活动模版的活动页
if (req.path === '/') {
return res.redirect('//m.yohobuy.com');
}
if (req.path !== '/.well-known/apple-app-site-association') {
req.url = `/activity${req.url}`;
}
} else if (req.subdomains.length) {
switch (req.subdomains[0]) {
case 'guang':
case 'cdnsrcguang': // CDN 逛 回源地址
req.url = req.url.replace('/guang', '');
req.url = `//m.yohobuy.com/guang${req.url}`;
return res.redirect(301, req.url);
case 'list': // list
case 'cdnsrclist':// CDN list 回源域名
return res.redirect(301, listParamsProcess.generatePathUrl(req.query));
case 'search': // search
// 有查询关键字
if (_.keys(req.query).length) {
return res.redirect(301, `//m.yohobuy.com/search/list?${querystring.stringify(req.query)}`);
} else {
return res.redirect(301, '//m.yohobuy.com/search');
}
// 已经废弃,只是对老页面做兼容 --start
case 'sale': // sale 跳转到 m.yohobuy.com/product/sale
if (_.keys(req.query).length) {
req.query.title = '专区活动';
delete req.query['openby:yohobuy'];
res.redirect(301, helpers.urlFormat('/', req.query, 'list'));
} else {
res.redirect(301, helpers.urlFormat('/product/sale', req.query, 'default'));
}
return;
case 'cart': // 购物车 跳转到 m.yohobuy.com/cart/index/index
res.redirect(301, helpers.urlFormat('/cart/index/index', req.query, 'default'));
return;
case 'new': // new.m.yohobuy.com 全部跳转到 m.yohobuy.com
if (req.path === '/hotrank') {
res.redirect(301, helpers.urlFormat('/product/newsale/hotrank', req.query, 'default'));
return;
}
res.redirect(301, helpers.urlFormat(req.path, req.query, 'default'));
return;
case 'item': // item.m.yohobuy.com 全部跳转到 m.yohobuy.com
res.redirect(301, helpers.urlFormat(req.path, req.query, 'default'));
return;
// 已经废弃,只是对老页面做兼容 --end
default: // 其它(识别为品牌)
if (req.path === '/') {
req.query = Object.assign(req.query, {
domain: req.subdomains[0]
});
req.url = `/product/shop?${querystring.stringify(req.query)}`;
}
break;
}
} else {
switch (req.path.split('/')[1]) {
// case 'guang':
// case 'cdnsrcguang': // CDN 逛 回源地址
// req.url = req.url.replace('/guang', '');
// req.url = `//m.yohobuy.com/guang${req.url}`;
// return res.redirect(301, req.url);
case 'list': // list
case 'cdnsrclist':// CDN list 回源域名
// return res.redirect(301, listParamsProcess.generatePathUrl(req.query));
req.query = listParamsProcess.generatePathUrl(req.query);
break;
/**
* 搜索配置:落地页 /search
* 结果页 /search/list
*/
// case 'search': // search
// // /search/ 跳转list
// // /search 跳转搜索页
// // 有查询关键字
// if (req.path.endsWith('/search/')) {
// return res.redirect(301, `//m.yohobuy.com/search/list?${querystring.stringify(req.query)}`);
// }
// break;
// 已经废弃,只是对老页面做兼容 --start
case 'sale': // sale 跳转到 m.yohobuy.com/product/sale
if (_.keys(req.query).length) {
req.query.title = '专区活动';
delete req.query['openby:yohobuy'];
res.redirect(301, helpers.urlFormat('/', req.query, 'list'));
} else {
res.redirect(301, helpers.urlFormat('/product/sale', req.query, 'default'));
}
return;
case 'new':
// new.m.yohobuy.com/a/b/c 全部跳转到 m.yohobuy.com/new/a/b/c
// m.yohobuy.com/new/hotrank
if (req.path.startsWith('/new/hotrank')) {
// res.redirect(301, helpers.urlFormat('/product/newsale/hotrank', req.query, 'default'));
req.url = `/product/newsale/hotrank?${querystring.stringify(req.query)}`;
break;
}
req.url = `${req.path.repalce(/^\/new/, '')}?${querystring.stringify(req.query)}`;
break;
// res.redirect(301, helpers.urlFormat(req.path, req.query, 'default'));
case 'item': // item.m.yohobuy.com 全部跳转到 m.yohobuy.com
// res.redirect(301, helpers.urlFormat(req.path, req.query, 'default'));
req.url = `${req.path.repalce(/^\/item/, '')}?${querystring.stringify(req.query)}`;
break;
// 已经废弃,只是对老页面做兼容 --end
default: // 其它(识别为品牌)
// if (req.path === '/') {
// console.log('------req.subdomains------');
// req.query = Object.assign(req.query, {
// domain: req.subdomains[0]
// });
// req.url = `/product/shop?${querystring.stringify(req.query)}`;
// console.log('------req.url------', req.url);
// }
break;
}
}
next();
};
};