Kennst sich jemand mit mod_rewrite aus? 301 Redirect...
Eingetragen von wflorian (251)
am 19.02.2009 - 21:54 Uhr in
am 19.02.2009 - 21:54 Uhr in
Wir wollen mit Hilfe von mod_rewrite einen 301 redirect formulieren. Umgeleitet sollen mehrere tausende Nodes von
www.xyz.de/festername/verschiedene-kategorien/seitenname.html
auf
www.xyz.de/festername/db/seitenname.html
Folgenden Code habe ich bereits "anfertigen lassen":
RewriteCond %{REQUEST_URI} !^/festername/db/
RewriteRule ^festername/[^/]+/([^/]+\.html)$ festername/db/$1 [R=301,L]
der eigentlich funktionieren sollte. tut er aber nicht. ich erhalte folgenden fehler: Fehler "Umleitungsschleife: Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann."
jemand eine idee wieso er nicht funktionieren könnte?
freue mich auf eure antworten.
grüße
florian
- Anmelden oder Registrieren um Kommentare zu schreiben
Tipps
am 20.02.2009 - 13:10 Uhr
Ich kenne mich auch nicht gut mit mod_rewrite aus, aber bei meinen Problemen hat es geholfen die komplette URL anzugeben.
Also:
RewriteCond %{REQUEST_URI} !^/festername/db/
RewriteRule ^festername/[^/]+/([^/]+\.html)$ www.xyz.de/festername/db/$1 [R=301,L]
Außerdem verstehe ich deine RewriteRule nicht so ganz. Ich persönlich würde eher sowas probieren:
RewriteCond %{REQUEST_URI} !^/festername/db/
RewriteRule ^festername/(?:.*)/(.+)$ www.xyz.de/festername/db/$1 [R=301,L]
OnkelSebo schrieb Außerdem
am 20.02.2009 - 15:51 Uhr
Außerdem verstehe ich deine RewriteRule nicht so ganz. Ich persönlich würde eher sowas probieren:
RewriteCond %{REQUEST_URI} !^/festername/db/
RewriteRule ^festername/(?:.*)/(.+)$ www.xyz.de/festername/db/$1 [R=301,L]
feste domain, mache ich bereits. ich teste das ganze derzeit auf meinem localhost, ohne die angabe http://localhost/projektordner funktioniert gar nichts.
deine rewrite rule scheint allerdings nicht zu funktionieren. zwar kommt es nicht mehr zu einem umleitungsfehler, aber die umleitung funktioniert erst gar nicht, es kommt ganz einfach zu einem 404 fehler...
mod_rewrite RewriteRule
am 20.02.2009 - 18:09 Uhr
# RewriteEngine einschalten
RewriteEngine On
#Regel
RewriteRule ^([^/]+)/festername/(.*)/(.*)\.html$ /festername/db/$3.html [R=301,L]
Die Regel bezieht sich auf "festername". Sobald dieser Begriff auftaucht, greif die Regel. Wenn es so nicht funktioniert, dann mit URL.
hallo rainman, nee beide
am 20.02.2009 - 18:08 Uhr
hallo rainman,
nee beide codes funktionieren nicht... habe auch versucht modifikationen vorzunehmen, ebenfalls ergebnislos. irgendwie ist doch der wurm drin! :(
RewriteRule
am 20.02.2009 - 19:06 Uhr
Eventuell hast du ein anderes Problem, warum diese Anweisung nicht funktioniert.
Könnte es sein, dass du lokal auf deinem Rechner XAMPP laufen hast und dort alles probierst? Wie ist dann der Apache konfiguriert? Sind alle Einstellungen richtig gesetzt?
Online funktioniert der Code, den ich dir nannte. Etwas auf deinem Rechner privat zum laufen zu bekommen, ist mit den vielen Unbekannten fast unmöglich.
Ich werde es dir trotzdem auseinander schlüsseln.
# RewriteEngine einschalten
RewriteEngine On
Dies ist wohl selbst erklärend. Wenn du dies schon in deiner .htaccess-Datei eingeschaltet hast, dann natürlich nicht noch einmal.
#Regel
RewriteRule ^([^/]+)/festername/(.*)/(.*)\.html$ /festername/db/$3.html [R=301,L]
RewriteRule ^([^/]+)/festername/(.*)/(.*)\.html$
/festername/db/$3.html
[R=301,L]
Das ist genau das was du wolltest und gilt für dein angegebenes URL-Design. Sollte es so nicht zutreffen und sich weitere "Ordner" vor oder hinter "festername" befinden, so stimmen die Anweisungen natürlich nicht mehr.
Beispiel:
#Regel
RewriteRule ^([^/]+)/projekt/festername/(.*)/(.*)\.html$ /projekt/festername/db/$3.html [R=301,L]
danke für deine
am 20.02.2009 - 20:15 Uhr
danke für deine hinweisstellung.
allerdings konnte ich den ersten code jetzt doch funktionsfähig machen. es musste lediglich eine kleine änderung für die localhost umgebung gemacht werden, jetzt funktioniert alles!
danke euch!! ;)