Progger: mod_rewrite klappt nicht

Beitrag lesen

Hallo ChrisB! :-)
Der "Allwissende" ist wieder da - wie schön das es Dich gibt!
Das ist echt ernst gemeint. Deine Kommentar helfen mir "meistens" weiter.

In diesem Fall scheint es mir doch sehr kompliziert zu sein, da ich mit diesem "RewriteRules" absoluter Leihe bin und mich mit Deinem Link schon sehr überfordert fühle. Zu allem Überfluss ist auch noch alles auf Englisch, was das ganze nicht wirklich leichter macht. Dennoch werde ich versuchen Dir zu folgen, sodass Du mir hoffentlich zum Ziel verhelfen kannst:

Selbst wenn du hier offensichtlich .de statt .php stattdessen meinst, bringt das RewriteRule trotzdem immer noch nicht dazu, sich für den Hostnamen des Requests auch nur das geringste Bisschen zu interessieren – RewriteRule matcht ausschließlich die Path-Komponente des URL, sonst nichts.

Da hatte ich mich tatsächlich verhaspelt, ich meinte natürlich .de.
Wenn ich Dich richtig verstanden habe komme ich hier mit RewriteRule nicht wirklich weiter.
Stattdessen sollte ich mich mit RewriteCond auseinander setzen...

Wenn du den Hostnamen auswerten willst, musst du das mit einer vorgeschalteten RewriteCond machen.

[…] Entsprechend sollte ich somit sämmtliche Eingaben wie
"http://k", "www.k", "k" abfangen - anschließend folgt "laus".
Da es nun die beiden Varianten "-mustermann.de" oder auch direkt "mustermann.de" gibt, habe ich die Regel ".*" verwendet, was beides abfangen sollte.

Das ist der nächste Fehler – du *willst* nicht „alles“ abfangen, was den Hostnamen angeht – sonst landest du nämlich in einer Endlos-Schleife von Umleitungen, wenn der Nutzer bereits den „richtigen“ Hostnamen in seiner Anfrage verwendet hat, und du trotzdem wieder einen Redirect dorthin ausgibst.

Das ist wohl richtig. Zu kurz gedacht - der User könnte ja auch mal was richtig machen :)

Und wenn er bereits diesen richtigen Hostnamen verwendet hat, aber die Anfrage per HTTP gestellt hat, dann willst du ihn trotzdem noch zur HTTPS-Variante umleiten – das ist also noch eine zusätzliche Bedingung, die du ebenfalls mit prüfen musst.

Dass schaffe ich hoffentlich auch mit RewriteCond?

Nachdem ich bei Google nochmal nach deutsch-sprachigen Seiten gesucht habe, bin ich auf folgende gestoßen: Link

Ich habe mir jetzt folgende Zeile für mein Beispiel erarbeitet:

RewriteCond %{HTTP_HOST} !^https://www.klaus-mustermann.de/12.34.56/login.php$

Das ergibt folgende Ergebnisse:
aus "klaus-mustermann.de/12.34.56/login.php" wird "https://www.klaus-mustermann.de/12.34.56/login.php" - SO SOLL ES SEIN! :o)

Ebenso bei der Eingabe "www.klaus-mustermann.de/12.34.56/login.php" KLAPPT WUNDERBAR!

Wenn ich jedoch "http://www.klaus-mustermann.de/12.34.56/login.php" eingebe, wird daraus "www.klaus-mustermann.de/12.34.56/login.php", was mich sehr wundert, da ich ja mit dieser direkten Eingabe zu "https..." gelange...?

Bei der Angabe der Domain ohne Bindestrich wird noch nichts weiter geänder, was wahrscheinlich damit zusammenhängt, dass es eine komplett andere Domain ist. Ich denke mal, ich könnte eine zweite Zeile hinzufügen in der der Bindestrich nicht vorkommt...? Werde ich gleich mal testen...

Ich bin also schon mal einen großen Schritt weiter, allerdings wäre es jetzt noch schön, dass auch bei der Eingabe von "http://www.klaus-mustermann.de/12.34.56/login.php" in eine verschlüsselte Seite (https) umgeleitet wird...

Hast Du hier vielleicht noch einen Tipp?

Vielen Dank schon mal für Deine Hilfe!

Besten Gruß Progger