/ / Htaccess Regex: REQUEST_URI ausschließen - Regex, Apache, .htaccess, Mod-Rewrite, Redirect

Htaccess Regex: REQUEST_URI ausschließen - regex, Apache, .htaccess, mod-rewrite, Umleitung

Ich habe wirklich alles versucht, das Werkzeug htaccess Tester sagt, dass es in Ordnung ist, aber es funktioniert nicht wirklich.

Ich möchte eine Unterdomäne nur dann zur Hauptdomäne umleiten, wenn die REQUEST_URI nicht mit 3 bestimmten Zeichenfolgen beginnt.

Ich habe es erfolglos versucht mit:

RewriteCond %{HTTP_HOST} ^sub.example.com$ [NC]
RewriteCond %{REQUEST_URI} !(aaa|bbb|ccc)
RewriteCond %{REQUEST_URI} !^/?$
RewriteRule ^(.*)$ http://www.example.com%{REQUEST_URI} [R=301,NC,L,QSA]

Ich will das:

  • http://sub.example.com (sollte nicht weiterleiten) -> http://sub.example.com | OK
  • http://sub.example.com/aaa/sss (sollte nicht weiterleiten) -> http://sub.example.com/aaa/sss | KO (Weiterleitung zu http: // www ...)
  • http://sub.example.com/zzz/xxx (sollte umleiten) -> http://www.example.com/zzz/xxx | OK

Vielen Dank

Antworten:

2 für die Antwort № 1

Versuchen Sie stattdessen diese Regel:

RewriteCond %{HTTP_HOST} ^sub.example.com$ [NC]
RewriteCond %{THE_REQUEST} !s/+(aaa|bbb|ccc)/ [NC]
RewriteRule . http://www.example.com%{REQUEST_URI} [R=301,L,NE]

Testen Sie es, nachdem Sie Ihren Browser-Cache geleert haben.

Verwenden THE_REQUEST Anstatt von REQUEST_URI um sicherzustellen, dass wir unveränderte URI-Werte verwenden, wie sie von Apache empfangen wurden.