mod_rewrite: Domain lesen und weiterleiten

Hallo Community,

folgende Frage habe ich an Euch...

Zurzeit leite ich 4 verschiedene Domains auf 4 verschiedene Ziele um - das ganze per .php Script.
Hat vielleicht Jemand eine Idee wie man das per "mod_rewrite" umsetzt?

Das .php Script sieht wie folgt aus: (Beispiel)
PHP:
<?php
if ($_SERVER["HTTP_HOST"] == "www.test1.eu") {
header("Location: http://www.test1.eu/cgi-bin/test1.pl?action=startseite");
}
elseif ($_SERVER["HTTP_HOST"] == "www.test2.eu") {
header("Location: http://www.test2.eu/cgi-bin/test2.pl?action=startseite");
}
elseif ($_SERVER["HTTP_HOST"] == "www.test3.eu") {
header("Location: http://www.test3.eu/cgi-bin/test3.pl?action=startseite");
}
elseif ($_SERVER["HTTP_HOST"] == "www.test4.eu") {
header("Location: http://www.test4.eu/cgi-bin/test4.pl?action=startseite");
} else {
header("Location: http://www.test1.eu/error.html");
}
exit();
?>


LG, -umbrella
 
Zuletzt bearbeitet:
Hat vielleicht Jemand eine Idee wie man das per "mod_rewrite" umsetzt?

Ja, nämlich genauso wie du es schon machst, nur in der Syntax von mod_rewrite.

Code:
RewriteCond %{HTTP_HOST} ^(.*)\.test1\.eu$
RewriteRule ^(.*)$ http://www.test1.eu/cgi-bin/test1.pl?action=startseite [R=301,L]
RewriteCond %{HTTP_HOST} ^(.*)\.test2\.eu$
RewriteRule ^(.*)$ http://www.test2.eu/cgi-bin/test2.pl?action=startseite [R=301,L]
RewriteCond %{HTTP_HOST} ^(.*)\.test3\.eu$
RewriteRule ^(.*)$ http://www.test3.eu/cgi-bin/test3.pl?action=startseite [R=301,L]
RewriteRule ^(.*)$ http://www.test1.eu/error.html [R=301,L]

Ist jetzt nur schnell aus nem Beispiel und der Doku zusammenkopiert und ungeprüft, sollte also noch entsprechend getestet werden.
 
Hallo lookshe,

erst mal vielen Dank für Deine Mühe.

Ich habe gestern Dein Beispiel Code ein wenig angepasst und getestet, am Anfang lief der Test auch gut. Daraufhin habe ich alle Regeln dementsprechend gesetzt, alles nochmal durch getestet - und "HTTP-Status 500". Habe mir dann auch noch mal Verschiedene Dokus dazu angesehen aber egal welche Regeln ich setzte mal greifen die und mal nicht. Habe da jetzt so viele Stunden verschwendet - ich lasse es jetzt einfach. Ist auch nicht das erste mal das ich das versuche...

Man muss auch dazu sagen das ich nur über einen kleinen Webspace verfüge, vielleicht ist ja da was mit der Konfiguration nicht richtig?


Danke nochmal... LG, - umbrella
 
So schnell wollen wir hier nicht aufgeben! Ausserdem hab ich aktuell etwas Freiraum, also zeig mal her, was du da gemacht hast. Sofern mod_rewrite nämlich aktiviert ist, dürfte es eigentlich keine Einschränkungen seitens des Hosters geben.
 
Ich nochmal... :)

So schnell wollen wir hier nicht aufgeben! Ausserdem hab ich aktuell etwas Freiraum, also zeig mal her, was du da gemacht hast.
Das ist wirklich sehr Nett von Dir - Danke... :)

Deine Antwort hat mich doch noch ermutigt weiterzumachen...

So wie ich die Regeln nun Definiert habe, funktionieren die eigentlich.
Ich denke mein Fehler lag immer daran das ich "$" falsch interpretiert habe - hab das irgendwie immer mit der Perl Variable "Skalar" durcheinander gebracht...

Code:
RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www\.|)test1\.eu$ [NC]
RewriteRule ^$ http://www.test1/cgi-bin/cms.pl?action=startseite [L,R=301]

RewriteCond %{HTTP_HOST} ^(www\.|)test2\.eu$ [NC]
RewriteRule ^$ http://www.test2.eu/cgi-bin/cms.pl?action=startseite [L,R=301]

RewriteCond %{HTTP_HOST} ^(www\.|)test3\.de$ [NC]
RewriteRule ^$ http://www.test3.de/far/index.html [L,R=301]

RewriteCond %{HTTP_HOST} ^(www\.|)test4\.de$ [NC]
RewriteRule ^$ http://www.test4.de/cgi-bin/cms.pl?action=startseite [L,R=301]

Ich denke ich kann das Script lesen und nachvollziehen. Trotzdem weiß ich nicht was das Modul in die Logs schreibt?
Also kann ich nicht sagen ob das Script zu 100% OK ist?

Vielleicht fällt Dir ja noch ein Fehler auf?
 
Also das sieht soweit ok aus.
Die Logs müssten entsprechend aktiviert werden, damit du diese auch siehst. Dies ist aber meines Wissens nach nur in der Apache Konfiguration möglich und nicht über htaccess. Aber sofern alles funktioniert, brauchst du es ja auch nicht. Es würde auch unnötig den Server belasten.
Ansonsten war dein Ansatz mit dem $-Zeichen von Perl schon richtig, denn je nach Verwendung gibt es das Zeilenende an oder ein zuvor gematchten Teil des Regex. So kann man bspw. eine Seite problemlos in ein Unterverzeichnis verschieben mit
Code:
RewriteRule ^index.php(.*)$ /test/index.php$1
Das würde dann aus http://test1.eu/index.php?seite1 http://test1.eu/test/index.php?seite1 machen.

Tante Edith meint noch, dass man auf Grund des fehlenden R-Flags diese Veränderung nicht mal im Browser sehen würde.
 
Zuletzt bearbeitet:
Das hört sich gut an. Werde jetzt mal das Script mit allen meinen Regeln belegen und ich hoffe danach läuft es noch?!
Ich muss mich in Zukunft einfach mehr mit dem Modul beschäftigen!

Nochmal ein großes Dankeschön für Deine Hilfe und Tipps... :)


LG, -umbrella
 
Zurück
Oben