Seite 1 von 1
Korrekte Umleitung bei Aufruf ohne www
Verfasst: 13.01.2012, 21:28
von cbatik
Hallo!
Ich habe folgende Anforderung, für 3 Domains im gleichen Shop:
- beim Aufruf von domain.de/unterseite.html (also ohne www) soll auf
www.domain.de/unterseite.html (also mit www) umgeleitet werden
- beim Aufruf von domain.at/unterseite.html (also ohne www) soll auf
www.domain.at/unterseite.html (also mit www) umgeleitet werden
- beim Aufruf von domain.ch/unterseite.html (also ohne www) soll auf
www.domain.ch/unterseite.html (also mit www) umgeleitet werden
Sprich: Es soll immer auf die jeweilige Domain umgeleitet werden, wenn der Aufruf ohne www erfolgt. Ich verwendene dazu folgenden Code:
Code: Alles auswählen
RewriteCond %{HTTP_HOST} !^www\.domain\.(at|de|ch)$ [NC]
RewriteRule ^(.*)$ http://www.domain.at/$1 [R]
Es funktioniert alles soweit, außer das immer auf auf die .at-Domain umgeleitet wird, sobald eine Unterseite einer anderen Domain ohne www aufgerufen wird. Mir ist auch klar, dass die zweite Zeile meines Codes der Grund des Fehlers ist (steht ja
www.domain.at dort), nur wie kann ich eben in dieser Zeile einen dynamischen Wert verwenden (statt fix .at zu schreiben)? Oder wie könnte ich es sonst noch lösen?
Alternativ hätte ich auch noch folgendes probiert, da funktioniert dann aber beim Aufruf von domain.de und domain.ch gar nichts mehr (geht nur noch domain.at):
Code: Alles auswählen
RewriteCond %{HTTP_HOST} !^www\.domain\.at$ [NC]
RewriteRule ^(.*)$ http://www.domain.at/$1 [R]
RewriteCond %{HTTP_HOST} !^www\.domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R]
RewriteCond %{HTTP_HOST} !^www\.domain\.ch$ [NC]
RewriteRule ^(.*)$ http://www.domain.ch/$1 [R]
Danke, LG
Christoph
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 13.01.2012, 21:40
von chris21
Sind außer der www. Subdomain noch andere Subdomains aktiv/serverseitig möglich?
Ansonsten, falls nicht, einfach so lösen:
Code: Alles auswählen
RewriteCond %{HTTP_HOST} ^domain\.at$ [NC]
RewriteRule ^(.*)$ http://www.domain.at/$1 [R=301]
RewriteCond %{HTTP_HOST} ^domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301]
RewriteCond %{HTTP_HOST} ^domain\.ch$ [NC]
RewriteRule ^(.*)$ http://www.domain.ch/$1 [R=301]
Re: Korrekte Umleitung bei Aufruf ohne www
Verfasst: 13.01.2012, 21:42
von Melegrian
Bereits mit der ersten Bedingung leitest Du alles außer !^www\.domain\.at$ um und so kann es nichts werden. Also, nur ohne-
www.domain.at auf mit-
www.domain.at umleiten und nicht alles außer-
www.domain.at auf mit-
www.domain.at umleiten.
Verfasst: 13.01.2012, 21:49
von cbatik
Oh Mann ... Hätte ich gleich gefragt, hätte ich mir heute viel Zeit gespart. Das war die Lösung:
Code: Alles auswählen
RewriteCond %{HTTP_HOST} ^domain\.at$ [NC]
RewriteRule ^(.*)$ http://www.domain.at/$1 [R]
RewriteCond %{HTTP_HOST} ^domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R]
RewriteCond %{HTTP_HOST} ^domain\.ch$ [NC]
RewriteRule ^(.*)$ http://www.domain.ch/$1 [R]
Danke Euch!
LG Christoph
Verfasst: 13.01.2012, 21:56
von Melegrian
Nehme [R=301] statt [R], sonst ergibt es einen 302.
Verfasst: 16.01.2012, 16:44
von cbatik
Ich noch einmal: Ich habe jetzt bemerkt, dass meine Suche nicht mehr funktioniert. Es wird jetzt immer immer ein leerer String (egal ob GET oder POST) übermittelt. Wenn ich wieder auf die ursprünglich RewriteRule umstellen, funktioniert alles. Die ursprünglich Variante war folgende:
Code: Alles auswählen
############################################
## rewrite everything else to index.php
#RewriteRule .* index.php [L]
Dass heisst: Ich muss diese RewriteRule auf alle Anfragen anwenden, außer wenn der Aufruf ohne www erfolgt. Nur wie? Wenn ich die obige Anweisung wieder aktiviere, gehen die Aufrufe ohne www alle auf die Startseite, also auf domain.at/index.php (oder domain.de bzw. domain.ch).
Hab jetzt schon herumprobiert, komme aber nicht so recht weiter.
Danke, LG
Christoph
Verfasst: 16.01.2012, 16:57
von cbatik
Ich denke, ich habe es gerade selbst gelöst:
Code: Alles auswählen
RewriteCond %{REQUEST_URI} /search/.* [NC]
RewriteRule .* index.php [L]
Verfasst: 18.01.2012, 12:12
von cbatik
Wie von mir bereits vermutet, betrifft das alle Formulare. Es wird nichts mehr per POST oder GET übertragen? Wie kann ich also einstellen, das für alle POST und GET Requests die Regel "RewriteRule .* index.php [L]" gilt?
Danke, LG
Christoph
Verfasst: 18.01.2012, 12:26
von Melegrian
Verstehe ich nicht ganz, da ja bei
ersichtlich sein sollte, wohin Du etwas sendest. In der Browserzeile sollte ja bei Verwendung von GET etwas stehen wie:
http:// www. domain.de/datei.php?parameter=abc
Falls nicht, so läuft doch da etwas anderes nicht wie gewünscht.
Verfasst: 18.01.2012, 12:30
von cbatik
Der einzige Unterschied ist bei mir, dass der gesamte Pfad im action-Attribut drinnen steht. Also "
https://www.domain.de/customer/login/" (wird so vom System automatisch generiert)
Bei der Suche war ja das gleiche Problem, siehe 1 Post weiter oben. Durch die Umstellung senden also alle Formulare keine Daten mehr mit.
Danke!
LG Christoph
Verfasst: 18.01.2012, 13:10
von Melegrian
Bei den Bedingungen und Regeln erfolgt ja nur eine Weiterleitung, wenn eine der 3 Domains ohne www aufgerufen wird. Erfolgt der Aufruf hingegen mit www, so wird auch nichts um- oder weitergeleitet. Ein Aufruf mit www kann somit eigentlich nach meinem Verständnis keinen Einfluss auf die Formulargeschichte haben.
Und wenn das Formular halt so aussieht
Code: Alles auswählen
<form action=http://www.domain.de/customer/login/ method="get">
Dann sollte dennoch anschließen in der Browsereingabezeile etwas stehen, wie "
https://www.domain.de/customer/login/?parameter=abc"
Verfasst: 18.01.2012, 13:28
von cbatik
Es werden auch ganz normal Parameter mitübergeben, ich verstehe es ja auch nicht. Ich habe nun zusätzlich folgende Bedingung eingeben, damit werden jetzt wieder alle Formulareingaben korrekt übermittelt.
Code: Alles auswählen
RewriteCond %{HTTP_HOST} ^www.domain\.(at|de|ch)$ [NC]
RewriteRule .* index.php [L]
Verfasst: 18.01.2012, 13:37
von Melegrian
Hast Du da außer der index.php noch eine index.html zu liegen?
Denn die konnte in dem Fall nichts annehmen.
Verfasst: 18.01.2012, 13:41
von cbatik
Nein, nur eine index.php
Gott sei Dank, sonst hätte ich wieder ein Problem mehr
