Je pense que la meilleure et la seule façon de procéder est d'utiliser une HTTP 301 déplacé de façon permanente une redirection comme celle-ci :
server {
listen [::]:80;
return 301 https://$host$request_uri;
}
Le site HTTP 301 déplacé de façon permanente La redirection est également la plus efficace car il n'y a pas de regex à évaluer, selon la méthode déjà mentionnée. pitfails .
Le nouveau HTTP 308 déplacé de façon permanente préserve la méthode Request et est supporté par les principaux navigateurs . Par exemple, en utilisant 308
empêche les navigateurs de changer la méthode de requête de POST
à GET
pour la demande de redirection.
Si vous voulez préserver le nom d'hôte et le sous-domaine c'est le chemin.
Ce site fonctionne toujours si vous n'avez pas de DNS car je l'utilise aussi localement. Je demande par exemple avec http://192.168.0.100/index.php
et sera redirigé vers exactement https://192.168.0.100/index.php
.
J'utilise listen [::]:80
sur mon hôte car j'ai bindv6only
réglé sur false
pour qu'il se lie aussi à la socket ipv4. changez-le en listen 80
si vous ne voulez pas d'IPv6 ou si vous voulez vous lier ailleurs.
La solution de Saif Bechan utilise le server_name
qui dans mon cas est localhost mais qui n'est pas joignable par le réseau.
La solution de Michael Neale est bonne, mais selon les pitfails, il existe une meilleure solution avec la redirection 301 ;)
2 votes
Veuillez envisager de déplacer la "réponse acceptée" vers serverfault.com/a/171238/90758 . C'est le bon.
0 votes
Il suffit d'utiliser $server_name au lieu du code dur mysite.com.