Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Endlosschleife bei httaccess redirect in Kombination rewrite

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
FloM
PostRank 3
PostRank 3
Beiträge: 99
Registriert: 12.07.2005, 11:10

Beitrag von FloM » 11.02.2010, 12:23

Hallo,

ich habe in meiner .htaccess folgende Regeln angelegt:

Code: Alles auswählen

RedirectPermanent /name-p-1152.html http://www.name.eu/name-p-4041.html

RewriteRule ^(.*)-p-([0-9]*).html$ product_info.php?products_id=$2&%{QUERY_STRING} [L]
Dabei wird eine Endlosschleife erzeugt. Hat jemand eine Idee warum und wie ich das lösen kann?

Gruß
Flo

Anzeige von ABAKUS

von Anzeige von ABAKUS »

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

Jetzt anfragen: 0511 / 300325-0.


Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 11.02.2010, 15:00

FloM hat geschrieben:

Code: Alles auswählen

RedirectPermanent /name-p-1152.html http://www.name.eu/name-p-4041.html

RewriteRule ^(.*)-p-([0-9]*).html$ product_info.php?products_id=$2&%{QUERY_STRING} [L]
Dabei wird eine Endlosschleife erzeugt. Hat jemand eine Idee warum und wie ich das lösen kann?
Wo da eine Endlosschleife herkommt, kann ich auf die Schnelle nicht erkennen, das liegt eventuell daran, dass mod_rewrite bei der Verarbeitung eines Pfades mehrfach eingreift.
mod_alias (Redirect) ist etwas einfacher gestrickt als mod_rewrite (RewriteRule), was zwar grundsätzlich gut ist, aber wenn die beiden auf den gleichen Pfaden rumackern, kommen sie sich gerne mal in die Quere. Insofern solltest du in diesem Falle die Redirect-Zeile durch eine mit RewriteRule ersetzen:

RewriteRule ^name-p-1152\.html$ https://www.name.eu/name-p-4041.html [R=301,L]

Und nur nebenbei, der Schönheit wegen:

RewriteRule ^(.*)-p-([0-9]*).html$ product_info.php?products_id=$2&%{QUERY_STRING} [L][/code]

Klammern brauchst du nur dann setzen, wenn du a) einen Bereich zur Verwendung mit $ abgreifen willst oder b) Bereiche gruppieren musst. Keines von dem beiden ist bei deinem ersten Klammerpaar der Fall. Man sieht es zwar immer wieder, aber das Muster .* muss nicht in Klammern gesetzt werden, es funktioniert auch ohne.
(Beachte, dass du bei einer Änderung im Ziel $2 gegen $1 austauschen musst, da die gewünschte Klammer dann die erste wäre, nicht mehr die zweite.)

Der Punkt ist in solchen Mustern ein Platzhalter. Möchtest du, dass im zu vergleichenden Text ein Punkt als solcher erscheint (zB .html), maskiere den Punkt im Muster mit einem Rückstrich (zB \.html).

Da du den Multiplikator * benutzt ( = beliebig viele, einschließlich gar keinem) passt dein Muster momentan auch auch auf den Pfad -p-.html – möchtest du das nicht, benutze statt * lieber + ( = mindestens eines).

Folglich:

RewriteRule ^.+-p-([0-9]+)\.html$ product_info.php?products_id=$1&%{QUERY_STRING} [L][/code]

FloM
PostRank 3
PostRank 3
Beiträge: 99
Registriert: 12.07.2005, 11:10

Beitrag von FloM » 17.02.2010, 15:38

Danke für die vielen Tips. Habe ich alle umgesetzt und mein Problem ist auch gelöst! :D

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag