node.js - 如何在 express 中使用带有完整 url 或子域的 get 方法?
问题描述
我想在我的 Express 应用程序上重定向某人,但我需要检查 example.com 之前的内容,例如 cdn.example.com、api.sample.example.com 等路径中的内容。如何在我的应用程序中处理路线的部分执行此操作?我也不知道如何在我的测试环境中解决这个问题。
编辑:我试过:
routes.use(function forceMainSite(req, res, next) {
//var host = req.get('Host');
var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
if (fullUrl === 'api.topics.example.com') {
return res.redirect(301, 'example.com');
}
return next();
});
这没有用。我也试过:
module.exports = function(app, hbs) {
return {
redirBadLinks: function(req,res,next){
var fullUrl = req.protocol + '://' + req.get('Host') + req.originalUrl;
if (fullUrl === 'http://sample.example.com') {
res.redirect(301, 'example.com');
}
return;
},
...
这也不起作用
解决方案
对于初学者,这是:
if (fullUrl === 'sample.example.com')
在任何一个代码中都不会匹配,因为fullUrl
以req.protocol + '://'
. 您正在尝试http://sample.example.com
与sample.example.com
我建议只比较主机名。
推荐阅读
- python - Tcl_AsyncDelete 与 pynput 和 pyautogui
- xcode - 使用 AVPlayer 在 macOS SwiftUI 应用程序中播放本地视频文件
- ios - 如何设置 UIView 在 mapView 上接收输入
- css - alignItem:中心在包含材质按钮的 flex 容器中不起作用
- javascript - Vuelidate 问题与 requireif 中的“this”引用
- python - 如何定义一个函数以基于另一个变量创建具有特定名称的变量?(Python 3)
- salesforce - 是否可以直接执行非测试 Apex 代码?
- dask - Dask 计算(以捕获错误),但将结果保留在工作人员身上
- ios - 从结构访问信息
- html - 当有图像时,jQuery问题仅从表格单元格中选择文本