Comment rediriger tous les liens non-www vers mon site Web vers https://www.
Je sais qu'il existe de nombreuses solutions pour .htaccess mais je n'ai rien trouvé de suffisant pour nginx.
Pour le moment, tout ce que j'ai est
##
# Redirect non-www to www
##
server {
listen 80;
server_name example.com; # add other domains separated by a space as necessary
rewrite ^/(.*)$ https://www.example.com/$1 permanent;
}
qui redirige:
example.com
www.example.com
http://example.com
http://www.example.com
à https://www.example.com
qui est ce que je veux, sauf que https://example.com
ne redirige pas https://www.example.com
Comment puis-je obtenir que https://
soit redirigé vers https://www.
?
Depuis ma dernière réponse en utilisant le "si" n'est pas recommandé dans la plupart des cas, je suis venu avec une autre solution qui semble fonctionner parfaitement.
Ce que j'ai fait était de créer un autre bloc de serveur avec www dans le server_name
et j'ai redirigé mes autres blocs de serveur vers celui-ci.
server {
listen 80;
listen [::]:80 default_server ipv6only=on;
return 301 https://www.example.com$request_uri;
}
# HTTPS — proxy all requests to the Node app
server {
# Enable HTTP/2
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
return 301 https://www.example.com$request_uri;
# Use the Let’s Encrypt certificates
...
}
server {
# Enable HTTP/2
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com;
# Use the Let’s Encrypt certificates
...
}
Jusqu'ici, je suis arrivé à une simple déclaration if sous le port 443 pour vérifier si le domaine est non-www, puis rediriger vers www.
server {
# Enable HTTP/2
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
if ($Host = example.com) {
return 301 https://www.example.com$request_uri;
}
# Use the Let’s Encrypt certificates
...
Je ne suis pas un expert, mais je ne pense pas que ce soit la meilleure solution car il s'agira d'une déclaration if
pour chaque demande, si j'ai raison.