Перенаправить non-www и HTTP на www и HTTPS - PullRequest
0 голосов
/ 11 февраля 2019

Я использую веб-сервер Express.Я использовал Let's Encypt для создания SSL-сертификатов для версии моего домена как с www, так и без www.Мой DNS имеет следующие записи:

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

У меня также есть этот код node.js для запуска веб-сервера:

// 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.com/privkey.pem', 'utf8');
const certificate = fs.readFileSync('/etc/letsencrypt/live/www.example.com/cert.pem', 'utf8');
const ca = fs.readFileSync('/etc/letsencrypt/live/www.example.com/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 для того же контента.Все следующие URL-адреса действительны прямо сейчас:

http://example.com
http://www.example.com
https://example.com
https://www.example.com

Я хочу перенаправить все неправильные URL-адреса на https://www.example.com, который является правильным URL-адресом.Я не уверен, как мне поступить так.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 11 февраля 2019

вы можете использовать промежуточное программное обеспечение, подобное этому, для проверки всех доменов и соответствующего перенаправления:

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

Просто убедитесь, что вы используете его только для производства

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...