J'essaie de rediriger les demandes vers https dans nginx, sauf si il est de la forme hôte/ANY_STRING_OF_CHARS/END_OF_URI, par exemple:
http://Host.org/about # pas de redirection
http://Host.org/users/sign_in # redirige vers https://Host.org/users/sign_in
Cela fonctionne apparemment dans Apache, mais je ne comprends pas comment fonctionne le bang (ignore si cela ne fonctionne pas vraiment):
RewriteRule !/([a-z]+)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Comment puis-je faire cela dans une règle de réécriture nginx? Cela ne fonctionne pas comme je l'avais espéré:
rewrite !/([a-z]+)$ https://$server_name$request_uri redirect;
Cela ne fait pas la redirection non plus, au cas où la logique serait inversée:
rewrite /([a-z]+)$ https://$server_name$request_uri redirect;
Aidez-moi, s'il vous plaît?
Envoie une redirection permanente au client:
server {
listen 80;
rewrite ^(/users/\w+)$ https://$Host$1 permanent;
...
}
pour une correspondance négative, vous pouvez utiliser:
if ($request_uri !~ "^/users/\w+$")
{
return 301 https://$Host$request_uri;
}
set $test "0";
if ($request_uri ~ "condition") {
set $test "1";
}
if ($test ~ "0") {
return 301 redirect url;
}