Martin Hein: .htaccess | mod_rewrite verhält sich merkwürdig

Beitrag lesen

Hallo Forum,

ich habe in einer .htaccess diverse RewriteRules definiert, die
auf meinem xampp funktionieren, sich aber auf dem Live-Server
anders verhalten. Ich kann es mir nicht erklären !

.htaccess
---------------------------------------------------------------------
Options +FollowSymLinks
Options -Indexes

ErrorDocument 404 /_content/index.php

RewriteEngine On
RewriteBase /

1) Alle Anfagen auf Verzeichnisse (ausser denen mit '_' am Anfang werden nach index.php umgeleitet

RewriteRule ^([^_]).+/$ /_content/index.php?%{QUERY_STRING}

2) Alle Anfragen die nicht mit 'dcbkk' beginnen ...

RewriteCond %{SERVER_NAME} !^dcbkk(.*)
#... werden nach daimlerchryslerbkk.de umgeleitet
RewriteRule (.*) http://www.daimlerchryslerbkk.de/

3) Alle Anfragen mit http (ausser auf /_admin/ und css-files) werden auf https umgeleitet

RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !/_admin/
RewriteCond %{REQUEST_URI} !(.*).css$
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI}

4) Anfagen mit leerem REQUEST_URI werden auf die Homepage umgeleitet

RewriteRule ^$ /_content/?site_id=1&%{QUERY_STRING}

5) Alle Anfragen mit https auf /_admin/ werden auf http umgeleitet

RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_URI} /_admin/
RewriteRule (.*) http://%{SERVER_NAME}%{REQUEST_URI}

---------------------------------------------------------------------

Die Datei ist gewachsen und sicherlich lässt sie sich optimieren.
Aber auf meinem System macht sie das, was sie soll. Auf dem
Liveserver verhält sie sich anders:

Unterschiedlich ist der Umgang mit # 2). Das ist die letzte Regel,
die ich eingeführt habe. Ich hätte sie eigentlich ganz als erstes
definiert (in der Erwartung, dass dann keine anderen Regeln mehr
gelesen werden). Aber dem ist nicht so:

  • Steht sie ganz oben greift immernoch die Umleitung nach https
      und dann zeigt der Browser mir eine 302 an.

  • Steht sie an Position 2) funktioniert alles, wie gewünscht:
      alle Aufrufe mit !'dcbkk' werden umgeleitet. In der Adresszeile
      steht die Adresse, wohin die Umleitung gegangen ist.

  • Auf dem Liveserver wird trotz Umleitung die eingegebene Adresse
      und es wird ein jedem Fall nach https umgeleitet.

Sorry, ich arbeite zum ersten mal mit mod_rewrite und darin sind
möglicherweise logische Fehler. Aber bei mir macht sie, was sie
soll. auf dem Liveserver nicht.

kann mir jemand helfen ?

tausen Dank und
beste gruesse,
martin