it-swarm.com.de

nginx URL mit negativer Regex umschreiben?

Ich versuche Anfragen an https in nginx umzuleiten, es sei denn es hat die Form Host/ANY_STRING_OF_CHARS/END_OF_URI, z.

http://Host.org/about # keine Weiterleitung

http://Host.org/users/sign_in # leitet weiter zu https://Host.org/users/sign_in

Dies funktioniert anscheinend in Apache, aber ich verstehe nicht, wie der Knall funktioniert (ignorieren, wenn es nicht wirklich funktioniert):

RewriteRule !/([a-z]+)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Wie kann ich dies in einer Nginx-Umschreiberegel tun? Dies funktioniert nicht wie ich gehofft hatte:

rewrite !/([a-z]+)$ https://$server_name$request_uri redirect;

Dies führt auch nicht zur Umleitung, falls ich die Logik rückwärts hatte:

rewrite /([a-z]+)$ https://$server_name$request_uri redirect;

Hilfe bitte?

10
kbighorse

Sendet eine permanente Weiterleitung an den Client:

server {
  listen 80;
  rewrite ^(/users/\w+)$ https://$Host$1 permanent;
  ...
}

für ein negatives Spiel könnten Sie verwenden:

if ($request_uri !~ "^/users/\w+$")
{
  return 301 https://$Host$request_uri;
}
21
Jack
set $test "0";
if ($request_uri ~ "condition") {
   set $test "1";
}
if ($test ~ "0") {
   return 301 redirect url;
}
1