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
:roll:

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

Code: Alles auswählen

<form action="datei.php" method="get">
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&#58;//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 %&#123;HTTP_HOST&#125; ^www.domain\.&#40;at|de|ch&#41;$ &#91;NC&#93;
RewriteRule .* index.php &#91;L&#93; 

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 ;-)