Johnson: Weiterleitung bestimmter Domains und/oder bestimmter Seiten

Beitrag lesen

Ok. Jetzt nach TOFU ^^

Ich habe auf meinem XAMPP jetzt ersteinmal einen VirtaulHost für dieses Projekt angelegt, um hier mit der htaccess Datei ordentlich arbeiten zu können. Hier war die Schwierigkeit, dass die hosts-Datei nicht einer qualifizierten Domain wie "example.local" oder "www.example.local" berücksichtigt wurde, sondern direkt vom Proxy aufgelöst werden sollte. Muss man auch erst mal wissen, wenn man nicht so in den Protokollen drinsteckt. ;-)

Vielen Dank für die Tipps Martin! Werde schauen, ob ich das Ding zum fliegen kriege, und mich noch etwas tiefer in mod_rewrite einarbeiten.

Was sich bei mir immer noch nicht wirklich klargestellt hat ist, dass das R-Flag der RewriteRule Funktion nicht so ganz so zu reagieren scheint, wie es die Doku des R-Flags auf den ersten Blick erwarten lässt.

Zitat:
You will almost always want to use [R] in conjunction with [L] (that is, use [R,L]) because on its own, the [R] flag prepends http://thishost[:thisport] to the URI, but then passes this on to the next rule in the ruleset, which can often result in 'Invalid URI in request' warnings.

Hier wird ja gesagt, dass diese Flag [R] nur mit im Zusammenspiel mit dem Flag [L] sofort aussteigt.
Ich muss dazu gestehen, dass ich das alles bisher über diesen htaccess tester getestet habe und hier nicht 100%ig darauf bauen kann, das diese die Regeln regelkonform interpretiert. Hnz!

Falls ich es hinbekomme, dann werd ich die Lösung noch hier reinstellen. Vielleicht hifts dem einen oder anderen ja noch. ;-)

Eine schöne Restwoche wünsche ich noch!
Gruß
Johnson

=============================================================

Hi,

Hallo,
[...]
Die letzten beiden Rules würde ich einfacher formulieren:
  RewriteRule /kontakt.html$ /kontakt.php [R=301]
Oder willst du auch in allen Unterverzeichnissen alle kontakt.html (falls vorhanden) nach kontakt.php umleiten?
Hm. Rischtisch. Das wäre einfacher. ^^ Merci

und nächstes Mal bitte ohne TOFU. Danke.

Die URL www.zusatz-domain1.de/kontakt.html wird aber lediglich in www.standard-domain.de/kontakt.html umgeschrieben.
Das ist mir im Moment nicht klar.
Hier hätten zwei sachen passieren müssen:

  1. die Domain hätte auf die standar-domain.de geändert werden müssen
  2. die Seite kontakt.html auf komtakt.php

Ja, aber Punkt 2. erst beim nächsten Durchlauf, dazwischen erfolgt ja zunächst der Redirect auf die neue Domain.

Da in meiner Version der .htaccess aber bereits nach der ersten Regel, welche die domain "ändert", ein Redirect durchgeführt wird, fallen alle weitern Regeln unter den Tisch. Aus diesem Grund gab ich das Flag "N" an.

Und ich vermute, das wird wegen des verlangten Redirects gar nicht beachtet. Das steht zwar nicht explizit in der Doku, erscheint mir aber logisch.

Das hat zwar den Nachteil, dass im ungünstigsten Fall zwei Redirects stattfinden, aber dieser Fall dürfte relativ selten vorkommen, oder?
Ok. Dem stimme ich zu. Für mich war es nur unlogisch, warum bei einem Redirect einfach Schluss sein sollte.

Weil dadurch der anfragende Client schon die Antwort bekommt: Frag nochmal woanders nach!
In deinem Fall landet er beim Folgerequest wieder auf demselben Server, aber unter anderer Domain. Im allgemeinen Fall müsste man hier davon ausgehen, dass der Folgerequest bei einem ganz anderen Server aufschlägt.

In meinem Fall (www.zusatz-domain.de/kontakt.html)

  1. Die Domain prüfen
  2. Die Domain umstellen und Prozess mit umgestellter nochmal ausführen

Und hier möge vielleicht ein intimer Kenner von mod_rewrite aufgreifen: Werden nachfolgende Rules noch bearbeitet, wenn eine in einen Redirect mündet? Wird das N-Flag bei einem gleichzeitigen Redirect überhaupt beachtet?

  1. Die Domain prüfen
  2. Auf kontakt.html prüfen
  3. kontakt.html auf kontakt.php weiterleiten

Ansonsten wäre deine Überlegung logisch - nur über die eben formulierten zwei Fragen bin ich mir nicht so ganz im Klaren.

Ich müsste dann also die Regeln so umstellen dass:

  1. überprüft wird ob was auf kontakt.html reinkommt und auf www.standard-domain.de/kontakt.php weiterleiten, egal was für eine Domain angegeben wurde.

Nein, nur auf /kontakt.php, keinen Hostnamen dabei angeben! Sonst hast du ja ebensogut wie vorher schon einen Redirect, und das Prinzip bleibt dasselbe.
Wobei ... Stillschweigend intern umleiten hätte natürlich zur Folge, dass immer noch /kontakt.html in der Adressleiste steht, der Client also die Änderung gar nicht mitbekommt. Kann gewünscht sein, vielleicht aber auch nicht.

  1. die gleiche Überprüfung mit instructions.html analog zu kontakt.html
  2. Für alles was jetzt noch nicht weitergeleitet wurde, überprüfen, ob die standard-domain verwendet wurde und falls nicht auf diese umleiten.

In der Reihenfolge könnte es wie gewünscht funktionieren. Testen! :-)

Ciao,
Martin