Authored by 周少峰

Merge branch 'feature/seoUrl302' of git.yoho.cn:fe/yohobuy-node into feature/seoUrl302

... ... @@ -79,7 +79,7 @@ const shop = (shopId, req, res, next, brandInfo) => {
*/
exports.index = (req, res, next) => {
let resData = {};
let qs = req._parsedOriginalUrl.query || '';
let qs = decodeURIComponent(req._parsedOriginalUrl.query || '');
list.getListData(Object.assign(req.query, {uid: req.user.uid}), req.yoho.channel).then(result => {
Object.assign(resData, result);
... ...
... ... @@ -4,6 +4,24 @@
'use strict';
module.exports = [
const helpers = global.yoho.helpers;
const TYPE = require('../type');
module.exports = [
{
type: TYPE.redirect,
origin: /\/about?shopId=([\d]+)/,
target: (req, match, id) => {
return helpers.urlFormat(`/shop${id}-about`, null, req.subdomains[0]);
}
},
{
type: TYPE.rewrite,
origin: /\/shop([\d]+)-about/,
target: (req, match, id) => {
req.query.domain = req.subdomains[0];
req.query.shopId = id;
return '/product/index/about';
}
}
];
... ...
/**
* Created by YanQing.Yang on 2017/3/9.
*/
'use strict';
const _ = require('lodash');
const helpers = global.yoho.helpers;
const mapSort = require(`${global.utils}/map-sort`);
const TYPE = require('../type');
module.exports = [
// 老版newURL
{
type: TYPE.redirect,
origin: '/new?gender=1,3&order=s_t_desc&msort=1,3,4,6,7,8,308,360',
target: helpers.urlFormat('/boys-new', null, 'list')
},
{
type: TYPE.redirect,
origin: '/new?gender=2,3&order=s_t_desc&msort=1,3,4,6,7,8,308,360',
target: helpers.urlFormat('/girls-new', null, 'list')
},
{
type: TYPE.redirect,
origin: '/new?order=s_t_desc&msort=365',
target: helpers.urlFormat('/kids-new', null, 'list')
},
{
type: TYPE.redirect,
origin: '/new?order=s_t_desc&msort=10',
target: helpers.urlFormat('/lifestyle-new', null, 'list')
},
// 筛选参数排序匹配
{
type: TYPE.redirect,
origin: req => {
if (_.isEmpty(req.query)) {
return false;
}
let sorts = mapSort(req.query);
let queryKeys = _.keys(req.query);
let index = 0;
let matched = _.map(sorts, (val, key) => {
return key === queryKeys[index++];
});
if (_.every(matched, match => match)) {
return false;
}
return true;
},
target: req => helpers.urlFormat(req.path, mapSort(req.query), 'list')
},
{
type: TYPE.rewrite,
origin: req => {
return !req.path || req.path === '/';
},
target: '/product/list/index'
},
{
type: TYPE.rewrite,
origin: /\/(.*)-new/,
target: (req, match, channel) => {
return `/product/list/${channel}-new`;
}
},
{
type: TYPE.rewrite,
origin: req => req.path === '/new',
target: '/product/list/new'
}
];
... ...
... ... @@ -42,37 +42,37 @@ const seoMap = {
keywords: '配饰其他,女士配饰,女士时尚配饰,YOHO!BUY有货',
description: 'YOHO!BUY有货配饰其他频道提供新款女士配饰,时尚帽子、围巾、耳钉手链、腰带胸针等女士潮流配饰搭配商品。购买女士配饰就到YOHO!BUY有货,100%正品保证!'
},
'msort=365&gender=1,3&order=s_t_desc': {
'gender=1,3&msort=365&order=s_t_desc': {
title: '男童服饰|男童上衣外套,下装,时尚男童鞋包配饰|YOHO!BUY有货 100%正品保证',
keywords: '男童服饰,男童上衣外套,男童下装,时尚男童鞋包配饰,YOHO!BUY有货',
description: 'YOHO!BUY有货男童服饰提供时尚男童上衣外套,下装,时尚男童鞋包配饰,教你穿出可爱,搭出时尚.购买当季最新款男童服饰就到YOHO!BUY有货,100%正品保证'
},
'msort=365&order=s_t_desc&gender=2,3': {
'gender=2,3&msort=365&order=s_t_desc': {
title: '女童服饰|女童上衣外套,下装,时尚女童鞋包配饰|YOHO!BUY有货 100%正品保证',
keywords: '女童服饰,女童上衣外套,女童下装,时尚女童鞋包配饰,YOHO!BUY有货',
description: 'YOHO!BUY有货女童服饰提供时尚女童上衣外套,下装,时尚女童鞋包配饰,教你穿出可爱,搭出时尚.购买当季最新款女童服饰就到YOHO!BUY有货,100%正品保证'
},
'msort=365&misort=368,392,414,421,429,419,408': {
'misort=368,392,414,421,429,419,408&msort=365': {
title: '潮童鞋包配饰|儿童鞋,儿童包,时尚潮童配饰|YOHO!BUY有货 100%正品保证',
keywords: '潮童鞋包配饰,儿童鞋,儿童包,时尚潮童配饰',
description: 'YOHO!BUY有货潮童鞋包配饰提供儿童鞋,儿童包,时尚潮童配饰,教你穿出可爱,搭出时尚.购买当季最新款潮童鞋包配饰就到YOHO!BUY有货,100%正品保证'
},
'msort=10&misort=103': {
'misort=103&msort=10': {
title: '数码3c|数码,3c,数码产品配件|YOHO!BUY有货 100%正品保证',
keywords: '数码,3c,3c数码,数码产品配件,YOHO!BUY有货',
description: 'YOHO!BUY有货数码3c汇集数码产品配件,提供手机/ipad壳套,数码配件,耳机,手机配件,相机,智能装备,U盘,电脑架.购买3c数码就到YOHO!BUY有货,100%正品保证'
},
'msort=10&misort=266': {
'misort=266&msort=10': {
title: '居家用品|居家生活,居家装修装饰购物|YOHO!BUY有货 100%正品保证',
keywords: '居家,居家用品,居家装修,居家装饰,居家生活',
description: 'YOHO!BUY有货居家频道提供家装修装饰购物,居家生活日用品、居家饰品,汇集家居饰品,杯子,储物收纳,雨伞,抱枕,香薰,床上用品等。购买居家日用品就到YOHO!BUY有货,100%正品保证!'
},
'msort=10&misort=101,280': {
'misort=101,280&msort=10': {
title: '玩具娱乐|玩具,玩偶,DIY,文具,毛绒玩具|YOHO!BUY有货 100%正品保证',
keywords: '玩具娱乐,玩具,玩偶,DIY,文具,毛绒玩具',
description: 'YOHO!BUY有货玩具娱乐频道提供玩具娱乐,玩具,玩偶,DIY,文具,毛绒玩具等,购买娱乐玩具就到YOHO!BUY有货,100%正品保证!'
},
'msort=10&misort=259': {
'misort=259&msort=10': {
title: '美妆|美白化妆品,日系美妆,美妆新品|YOHO!BUY有货 100%正品保证',
keywords: '美妆,美白化妆品,日系美妆,美妆新品',
description: 'YOHO!BUY有货美妆频道提供美白化妆品,日系美妆,美妆新品,汇集彩妆,香水,个人护理,纹身贴,面部护肤,美体瘦身等商品。购买美妆产品就到YOHO!BUY有货,100%正品保证!'
... ...
... ... @@ -52,8 +52,6 @@ module.exports = () => {
{ // eslint-disable-line
if (!req.path || req.path === '/') {
req.url = '/product/list/index';
} else if (/\/(.*)-new/.exec(req.path) !== null) {
req.url = `/product/list/${RegExp.$1}-new`;
} else if (req.path === '/new') {
req.url = '/product/list/new';
}
... ... @@ -74,9 +72,6 @@ module.exports = () => {
req.url = `/product/index/brand?domain=${req.subdomains[0]}`;
} else if (req.path === '/about') {
req.url = `/product/index/about?domain=${req.subdomains[0]}`;
} else if (/\/shop([\d]+)-about/.exec(req.path) !== null) {
req.query.shopId = RegExp.$1;
req.url = '/product/index/about';
}
break;
}
... ...
/**
* 参数排序
* @author: yyq<yanqing.yang@yoho.cn>
* @date: 2017/3/9
*/
'use strict';
/**
* 对象字段排序
*/
module.exports = obj => {
if (!obj) {
return {};
}
let data = {};
Object.keys(obj).sort().forEach(k => {
data[k] = obj[k];
});
return data;
};
... ...