Seite 1 von 1

Frage Weiterleitung htaccess mit www. ohne www.

Verfasst: 21.09.2011, 09:20
von Aamu
Hallo,
diese Frage wurde sicherlich schon oft gestellt, allerdings habe ich es trotz aller Tutorials nicht hinbekommen.
Folgendes ist mein Problem:
Meine Seite ist über www.domain.de und domain.de erreichbar. Navigiert man durch die Seite, wird allerdings immer richtigerweise das www. vorangesetzt. Der erste Seitenaufruf zeigt die Seite aber trotzdem ohne www. an.

In der htaccess habe ich folgendes Inhalt stehen

Code: Alles auswählen

<FilesMatch "\.js\.gzip$">
 AddType "text/javascript" .gzip
</FilesMatch>
<FilesMatch "\.css\.gzip$">
  AddType "text/css" .gzip
</FilesMatch>
AddEncoding gzip .gzip

RewriteEngine On
RewriteRule ^typo3$ - &#91;L&#93;
RewriteRule ^typo3/.*$ - &#91;L&#93;
RewriteRule ^uploads/.*$ - &#91;L&#93;
RewriteRule ^fileadmin/.*$ - &#91;L&#93;
RewriteRule ^typo3conf/.*$ - &#91;L&#93;

RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-l
RewriteRule .* /index.php
Füge ich folgendes hinzu

Code: Alles auswählen

RewriteCond %&#123;HTTP_HOST&#125; ^meinedomain\.de$ &#91;NC&#93;
RewriteRule ^&#40;.*&#41;$ http&#58;//www.meinedomain.de/$1 &#91;R=301,L&#93;
wird bei jedem Aufruf auf www.meinedomain.de//index.php weitergeleitet (kein Schreibfehler). Das geht also nicht.

Lösche ich

Code: Alles auswählen

RewriteRule .* /index.php
heraus, wird beim ersten Aufruf richtig weitergeleitet, beim Navigieren durch die Seite bekomme ich aber jedes mal einen 404-Error.

Ich benutze TYPO3 und habe meine Seite bei jweiland.net gehostet.

Hat jemand dazu eine Idee?
Vielen Dank im Voraus.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 21.09.2011, 09:29
von Synonym
Hat jemand dazu eine Idee?
Ja...

Schreib hinter das "RewriteRule .* /index.php" ein [L] und packe die www-Geschichte vor das "RewriteCond %{REQUEST_FILENAME} !-f "

Verfasst: 21.09.2011, 09:37
von Aamu
Synonym hat geschrieben:
Hat jemand dazu eine Idee?
Ja...

Schreib hinter das "RewriteRule .* /index.php" ein [L] und packe die www-Geschichte vor das "RewriteCond %{REQUEST_FILENAME} !-f "
Das hat funktioniert, vielen herzlichen Dank für die schnelle und hilfreiche Antwort! Magste mir auch noch erklären, warum das so funktioniert und nicht anders?

Verfasst: 21.09.2011, 09:45
von Synonym
Meine beiden Punkte haben so gesehen nicht direkt was miteinander zu tun.

Wenn die www-Geschichte hinter dem anderen Teil kommt, dann wird der andere Teil eben immer zuerst abgearbeitet. In dem Fall wird eben bei allem (.*) auf die index.php zugegriffen. Da diese Zeile aber keinen Last-Bedingung [L] hatte, "merkt" sich der Apache diesen Wert und es geht direkt weiter zu der www.Geschichte. Dort wird dann neben dem eigentlichen www am Anfang auch der Wert von vorher hinten angehängt. Deine Rule fürs WWW sagt schon aus, dass er weiterleiten soll an domain.tld/ Der Wert von vorher ist "/index.php". Beides zusammen ergibt dann eben das "domain.tld//index.php"

www-Geschichten sollten aber immer weiter nach vorne, denn es macht nicht wirklich Sinn, erst andere Rules zu bearbeiten, andere Files einzulesen um danach festzustellen, dass man eigentlich weiterleiten muss, weil das www fehlt. Also erst das Weiterleiten, dann den Rest.

Ein [L] alleine hätte nicht gereicht, da der Apache dann nie bis zum Ende durchgedrungen wäre und schon vorher die Bearbeitung beendet hätte. Also die www-Geschichte davor. Ist die davor, dann hätte man das [L] nicht benötigt, da die Zeile ja die letzte ist, aber es beugt zukünftige Fehler vor, falls danach doch mal was anderes kommen sollte.

Verfasst: 21.09.2011, 10:35
von Aamu
Vielen herzlichen Dank für die Erläuterung! Dann kann ich das in Zukunft richtig machen und anderen hilft es eventuell auch. Danke sehr! :)