RewriteCond REQUEST_URI - ^ funktioniert nicht wie erwartet

Ich bin den Aufbau einer Website in codeigniter. Ich habe eine Reihe von rewrite-Konditionen & Regeln .htaccess-Datei. Der erste Satz von Regeln, schaltet SSL an oder aus, je nachdem auf das erste segment der uri.

Dann durchläuft es erneut & wenn eine übereinstimmung gefunden wird, leitet die Seite entsprechend. Wenn keine übereinstimmung vorhanden ist, und die uri beginnt NICHT mit einem der aufgelisteten Zeichenfolgen, leitet es Sie zu einer anderen Seite. Wenn keine Bedingungen erfüllt sind, geht es an die index-Seite.

Ist das problem mit meinem ersten Satz von Regeln, die wiederum SSL on & off. Ich möchte, um anzugeben, dass der uri muss STARTEN mit admin oder sichern. Aber wenn ich die ^, um den Anfang des Strings, alles bricht. Hier ist, was ich habe:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/?(admin|secure)
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^/?(admin|secure)
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

...specific rewrites here
RewriteRule ^secure-form1$ secure/contract/secure-form1 [L]
RewriteRule ^secure$ secure/article/secure [L]

RewriteCond %{HTTP_HOST} ^www.example.com$ 
RewriteCond %{REQUEST_URI} !^/(admin|form|secure|page)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/page/article/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Wenn ich die ^ - symbol in den ersten 2 rewrite-Bedingungen (https on & off), dann
http://www.example.com/secure
schreibt an
https://www.example.com/index.php/secure/article/secure
das ist die Letzte rewrite-Regel. Die url tatsächlich ändert sich dieser im browser.

Wenn ich das ^ - symbol aus den ersten 2 umschreiben die Bedingungen, dann geht es auf der rechten Seite. Aber ich muss zu geben Sie den Beginn der uri, da gibt es andere Seiten, die "sicher" in der Mitte der uri (und nach einem Schrägstrich), die NICHT SSL verwenden.

Ich kann nicht herausfinden this one out.

Sind Sie sicher, dass nichts in Ihrem php-code, der umgeleitet wird?
Nein, ich kann nichts finden

InformationsquelleAutor user1669830 | 2012-09-17

Schreibe einen Kommentar