最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

将非www和HTTP重定向到www和HTTPS

运维笔记admin12浏览0评论

将非www和HTTP重定向到www和HTTPS

将非www和HTTP重定向到www和HTTPS

我正在运行一个Express Web服务器。我使用Let's Encrypt为我的域的www和非www版本创建SSL证书。我的DNS有这些记录:

CNAME | Host: @   | Target: dynamicdns.example. | TTL: 60min
CNAME | Host: www | Target: dynamicdns.example. | TTL: 60min

我也有这个node.js代码来运行webserver:

// Dependencies
const express = require('express');
const fs = require('fs');
const http = require('http');
const https = require('https');

// Create express instance
const app = express();

// Get credentials from system
const privateKey = fs.readFileSync('/etc/letsencrypt/live/www.example/privkey.pem', 'utf8');
const certificate = fs.readFileSync('/etc/letsencrypt/live/www.example/cert.pem', 'utf8');
const ca = fs.readFileSync('/etc/letsencrypt/live/www.example/chain.pem', 'utf8');
const credentials = {
    key: privateKey,
    cert: certificate,
    ca: ca
};

// Initalize server
app.use(express.static('public'));
const httpServer = http.createServer(app);
const httpsServer = https.createServer(credentials, app);

// Listen for HTTP
httpServer.listen(80, () => {
    console.log('HTTP Server running on port 80');
});

// Listen for HTTPS
httpsServer.listen(443, () => {
    console.log('HTTPS Server running on port 443');
});

这一切都正常,但它会产生一个问题,即为同一内容提供多个有效的URL。以下网址目前均有效:





我想将所有错误的网址重定向到,这是正确的网址。我不确定我该怎么办呢。任何帮助,将不胜感激。

回答如下:

你可以使用像这样的中间件来检查所有域并相应地重定向:

app.use((req, res, next) => {
  if (!req.secure) {
    return res.redirect('https://' + req.get('host') + req.url);
  }
  next()
})

只需确保将其用于生产

发布评论

评论列表(0)

  1. 暂无评论