Seite 1 von 1

301 Redirect von Unterseite auf Hauptseite

Verfasst: 04.02.2011, 13:22
von redewendung
Hallo,

ich habe ein kleines Problem.

Ich habe auf meiner Webseite alle Anfragen auf www.domain.de statt domain.de umgeleitet.

Arbeite mit mod_rewrite, also statt www.domain.de/kontakt.php habe ich www.domain.de/kontakt/

Habe nun für die Startseite folgende Domain: www.domain.de/startseite/

Da diese Seite aber identisch mit www.domain.de ist, möchte ich www.domain.de/startseite/ immer auf www.domain.de umleiten. irgendwie klappt das aber nicht.

Leite das mit www. gerade so in meiner .htaccess:

Code: Alles auswählen

RewriteCond %{HTTP_HOST} ^domain.de
RewriteRule (.*) http://www.domain.de/$1 [R=301,L]
Wäre sehr über Hilfe dankbar.

Verfasst:
von

Verfasst: 04.02.2011, 16:36
von Synonym
irgendwie klappt das aber nicht.
Und was genau geht nicht?
Wie hast Du es versucht, das was nicht ging?

Wo kommt das "/startseite/" her?

Was passiert, wenn Du "www.domain.de" aufrust? Wird dann an "/startseite/" weitergeleitet oder wo kommt das her?

Verfasst: 05.02.2011, 12:32
von redewendung
Nein die index.php hat noch zusätzlich "startseite". Das war ein fehler, aber die ganzen deeplinks führen auf /startseite/ und es wäre sehr aufwändig, das zu ändern.

Verfasst:
von

Verfasst: 05.02.2011, 12:55
von Synonym
ok, keine Antwort ist auch eine Antwort...

RewriteRule ^startseite/$ / [R=301,L]

Verfasst: 05.02.2011, 13:44
von redewendung
Synonym hat geschrieben:
irgendwie klappt das aber nicht.
Und was genau geht nicht?
Wie hast Du es versucht, das was nicht ging?

Wo kommt das "/startseite/" her?

Was passiert, wenn Du "www.domain.de" aufrust? Wird dann an "/startseite/" weitergeleitet oder wo kommt das her?
Sorry.

Also er öffnet trotzdem www.domain.de/startseite und ersetzt es nicht mit www.domain.de.

Versucht habe ich es so:

Code: Alles auswählen

RewriteCond %{HTTP_HOST} ^www.domain.de/startseite/
RewriteRule (.*) http://www.domain.de/$1 [R=301,L] 
Das /startseite/ habe ich für die index.php angelegt:

Code: Alles auswählen

RewriteRule ^startseite/$ index.php
Viele Grüße[/code]

Verfasst: 06.02.2011, 10:38
von Synonym
ok, dann kommen hier nun schon mal mehrere Punkte zusammen.

Mein Vorschlag reagiert auf "/startseite/", nicht auf "/startseite"

Für Beides das nehmen:
RewriteRule ^startseite/?$ / [R=301,L]

Code: Alles auswählen

RewriteCond %{HTTP_HOST} ^www.domain.de/startseite/
RewriteRule (.*) http://www.domain.de/$1 [R=301,L] 
Das konnte nicht gehen, denn ein Host beinhaltet nur http, die Domain und die Endung. Unterordner / Files sind dort nicht bekannt, also das "/startseite/".

Code: Alles auswählen

RewriteRule ^startseite/$ index.php
Ok, aber das passt dann ja mit meinem oben nicht zusammen.

Meiner leitet /startseite/ an / weiter. / ruft seinerseits in dem Fall dann index.php auf.

Deiner leitet nicht weiter, sondern ruft intern bei "/startseite/" die index.php auf.

Poste mal die komplette .htaccess

Verfasst: 06.02.2011, 22:06
von redewendung
Beitrag entfernt

Verfasst: 07.02.2011, 08:33
von Synonym
So, dann nochmal zusammengefasst:
www.domain.de/startseite/ soll weitergeleitet werden an www.domain.de

Code: Alles auswählen

RewriteEngine on
RewriteBase / 
passt

Code: Alles auswählen

RewriteEngine on 
überflüssig, war oben schon

Code: Alles auswählen

RewriteCond %{HTTP_HOST} ^needabeat.com
RewriteRule (.*) http://www.needabeat.com/$1 [R=301,L] 
Leitet für die Domain "needabeat" alles ohne www weiter an die Version mit www.
Passt

Code: Alles auswählen

RewriteCond %{HTTP_HOST} ^need-a-beat.com
RewriteRule (.*) http://www.needabeat.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.need-a-beat.com
RewriteRule (.*) http://www.needabeat.com/$1 [R=301,L]  
Leitet die andere Domain weiter. Könnte man alles drei zusammenfassen, passt so aber auch

Code: Alles auswählen

RewriteBase / 
Ist auch doppelt

Code: Alles auswählen

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule !\.[a-z]{2,4}$ %{REQUEST_URI}/ [R=301,L,noescape] 
Alles was nicht File oder Dir oder Slash am Ende hat weiterleiten, wenn es keine "Endung" hat.
(Trailing-Slash-Umsetzung?)

Code: Alles auswählen

RewriteRule ^startseite/$ index.php
index.php aufrufen, wenn /startseite/ angefordert wurde.
Genau hier liegt das Problem.
Lösche die Zeile und füge dafür meine ein

Code: Alles auswählen

RewriteRule ^startseite/$ http://www.needabeat.com [R=301,L]

Verfasst: 07.02.2011, 12:53
von redewendung
Danke, dass Du Dir so viel Zeit genommen hast.

Alles klappt.

Bis bald!