Seite 1 von 1

Frage zu RewriteRule

Verfasst: 05.04.2008, 10:40
von xoni
Hallo Forum,

ich habe u.a. folgenden Rule in meiner .htaccess

Code: Alles auswählen

RewriteEngine on
RewriteRule ^(.*).html$ $1.php
Zur Frage:

Die Seiten sind nun über xyz.php also auch xyz.html erreichbar.
Um nun DC zu verhindern fehlt mir der entsprechende Rule, um alle Anfragen von xyz.php mit ner 301 auf xyz.html zu leiten.

Kann mir jemand helfen?

Gruß, wollbay

Verfasst:
von

Verfasst: 05.04.2008, 12:08
von erobuilder
redirectMatch 301 ^([a-zA-Z0-9_-]*).php$ https://deineDomain/$1.html

ungetestet falls es nicht geht einfach nach redirectMatch suchen ;)

stopp nicht testen gibt ne endlosschleife von php auf html und zurück kannst gar nicht machen da Du ja wieder auf php umleitest ausweg Du gibtst den .php Dateien php4 oder php5 als Dateiendung dann klappts wieder.

Musst dann aber auch schauen ob die vom Host her zugelassen sind und Deine Rewrite Rule entsprechend anpassen.

Verfasst: 05.04.2008, 17:46
von xoni
redirectMatch 301 ^([a-zA-Z0-9_-]*).php$ https://deineDomain/$1.html

ungetestet falls es nicht geht einfach nach redirectMatch suchen

stopp nicht testen gibt ne endlosschleife von php auf html und zurück kannst gar nicht machen da Du ja wieder auf php umleitest ausweg Du gibtst den .php Dateien php4 oder php5 als Dateiendung dann klappts wieder.

Musst dann aber auch schauen ob die vom Host her zugelassen sind und Deine Rewrite Rule entsprechend anpassen.
@ erobuilder
Vielen Dank für Deine Hilfe; den Versuch habe ich auch unternommen und es geht natürlich nicht. Das Problem bleibt das gleiche, der doppelte Content ensteht auch mit .php4 oder.php5 da die Seiten ja ebenfalls über diese Dateiendungen im Browser aufrufbar bleiben.

Gibt es denn keine andere Lösung, um DC zu vermeiden? Ich meine irgendwie muß mann doch ein Rule finden, das nur 1 Dateiendung zulässt, bzw. alle Anfragen auf eine Dateiendung umleitet.

Noch einer eine Idee?

Edit: Vielleicht lässt sich ja mit robots.txt was machen. Was haltet Ihr von so was:

Code: Alles auswählen

User-agent: *
Disallow: /*.php$

Gruß, wollbay

Verfasst:
von

Verfasst: 05.04.2008, 22:42
von chris21
@Wollbay:

Dein Problem ist mit einem kleinen Trick schnell lösbar:

Code: Alles auswählen

RewriteEngine on
RewriteRule ^(.*).html$ $1.php?umgeleitet=ja

RewriteCond %{QUERY_STRING} !^umgeleitet=ja$
RewriteRule ^(.*).php $1.html [R=301]

Verfasst: 06.04.2008, 02:40
von To-Bi-As
Oder einfach alles was nicht auf .html endet ausschließen

Code: Alles auswählen

# sowie alles, was nicht auf .html endet, ausschließen
RewriteRule !\.html$ - [L] 
Im der Regel sind diese .php Seiten eh nicht vollständig da noch Navi Footer oder sonstwas fehlt.

Gruß, Ingo

Verfasst: 06.04.2008, 18:20
von pr_sniper
Einfach wieder mal nachlesen: https://www.google.com/support/webmaste ... tx=sibling

wollbay hats spät, aber jetzt auch getan ...

Verfasst: 07.04.2008, 07:49
von xoni
pr_sniper hat geschrieben:Einfach wieder mal nachlesen: https://www.google.com/support/webmaste ... tx=sibling

wollbay hats spät, aber jetzt auch getan ...
@ pr_sniper
Ja, Sorry! Ich hätte ja auch schon vorher drauf kommen können, die robots.txt dafür zu verwenden; dafür ist die Datei schließlich auch da.

Vielen Dank trotzdem für die genannten Tipps, ich habe dadurch wieder ein wenig dazugelernt.

Gruß, wollbay