...
|
...
|
@@ -21,6 +21,11 @@ files.forEach((file) => { |
|
|
}
|
|
|
});
|
|
|
|
|
|
/**
|
|
|
* 1. origin 可接受是 正则 和 函数
|
|
|
* 2. target 可接受是 匹配字符串 和 函数
|
|
|
* @returns {Function}
|
|
|
*/
|
|
|
module.exports = () => {
|
|
|
return (req, res, next) => {
|
|
|
let curDomainRules = domainRules[req.subdomains[0]];
|
...
|
...
|
@@ -32,6 +37,7 @@ module.exports = () => { |
|
|
for (let i = 0; i < curDomainRules.length; i++) {
|
|
|
let rule = curDomainRules[i];
|
|
|
|
|
|
// 匹配成功
|
|
|
if (
|
|
|
(_.isRegExp(rule.origin) && !_.isEmpty(rule.origin.exec(req.url))) ||
|
|
|
(_.isFunction(rule.origin) && rule.origin(req))
|
...
|
...
|
@@ -39,15 +45,21 @@ module.exports = () => { |
|
|
let newUrl = req.url;
|
|
|
|
|
|
if (_.isRegExp(rule.origin)) {
|
|
|
// 正则
|
|
|
if (_.isFunction(rule.target)) {
|
|
|
// 函数
|
|
|
newUrl = req.url.replace(rule.origin, _.partial(rule.target, req));
|
|
|
} else if (_.isString(rule.target)) {
|
|
|
// 字符串
|
|
|
newUrl = req.url.replace(rule.origin, req.target);
|
|
|
}
|
|
|
} else if (_.isFunction(rule.origin)) {
|
|
|
// 函数
|
|
|
if (_.isFunction(rule.target)) {
|
|
|
// 函数
|
|
|
newUrl = rule.target(req);
|
|
|
} else if (_.isString(rule.target)) {
|
|
|
// 字符串
|
|
|
newUrl = rule.target;
|
|
|
}
|
|
|
}
|
...
|
...
|
|