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
| OKhttp://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 № 1Versuchen 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.