Ich versuche, alle URIs übereinstimmen, die mit #/tool_[a-z\-]+#
außer beginnen, wenn sie von /public
gefolgt wird. Wie /tool_calculator
oder was auch immer.Mod Rewrite Regex Negative Lookahead
Zum Beispiel, wenn der URI mit /tool_store-front
oder /tool_store-front/anything-but-public
beginnt, dann möchte ich sie zu HTTPS umleiten. Also, /tool_store-front/public
würde nicht umleiten.
Hier ist, was ich habe, und es funktioniert nicht
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} ^/?tool_[a-z-]+(?!/public.+) [OR]
RewriteCond %{REQUEST_URI} ^/?secure
RewriteCond %{REQUEST_URI} !^/?secure/public/info
RewriteRule ^(.*)$ https://www.example.org%{REQUEST_URI} [NC,L]
Es hat funktioniert. Danke <3. Aber wie kommt es, dass es '[a-z] +' 'wie gesagt rückwärts verfolgt? Ich folgte nicht ganz: '( –
[Siehe diese Demo, um besser zu verstehen] (https://regex101.com/r/Zipw5q/1) Überprüfen Sie 'regex debugger' link, um Backtracking Teil besser zu verstehen. Sobald das klar ist, ändern regex zu '^/tool_ [az -] ++ (?!/public)' und jetzt wird es keine Übereinstimmung mehr geben und 'regex debugger 'erneut prüfen – anubhava