mod_rewrite Regel soll Unterverzeichnisse entfernen – tut nicht?
Netzhexe
- webserver
Hallo Leute,
tja, hm, hier tut was nicht so wie ichʼs gerne hätte, und ich komm nicht drauf woranʼs liegt. Folgendes: Ich habe meine alte, handgestrickte Homepage auf Drupal 7 umgestellt und will nun meine alten Links per mod_rewrite auf die neuen verweisen. Die alten hatten Unterstriche als Trenner, umgewandelte Umlaute und hintendran .html, außerdem waren sie größtenteils in einem (virtuellen) Unterverzeichnis. Ich muss also _ zu - machen, au, oe und ue wieder in ä, ö und ü verwandeln und das .html sowie das Unterverzeichnis entfernen. Beispiel:
alt: http://www.thedreamersmaze.org/gedankenarchiv/schoene_traeume.html
neu: http://www.thedreamersmaze.org/schöne-träume
Hier mal was ich gebastelt habe:
-----------------------------------
RewriteRule ^index.(html)$ / [L,R=301]
RewriteCond %{REQUEST_URI} .html$
RewriteRule oh_wow_&ndash_oh_weh_oh_weh.html$ /oh-wow-oh-weh-oh-weh [L,R=301]
RewriteRule !(.*)(ae|oe|ue|_)(.*) - [S=5]
RewriteRule (.*)_(.*)$ $1-$2
RewriteRule (.*)ae(.*)$ $1ä$2
RewriteRule (.*)oe(.*)$ $1ö$2
RewriteRule (.*)ue(.*)$ $1ü$2
RewriteRule (.*)(ae|oe|ue|_)(.*)$ - [N]
RewriteCond %{REQUEST_URI} /
RewriteRule ^(.*)/(.*).html$ /$2 [L,R=301]
#RewriteCond %{REQUEST_URI} !/
RewriteRule ^(.*).html$ /$1 [L,R=301]
-----------------------------------
Das funktioniert einwandfrei bei
http://www.thedreamersmaze.org/projekte.html --> http://www.thedreamersmaze.org/projekte
http://www.thedreamersmaze.org/blöd.html --> http://www.thedreamersmaze.org/blöd
http://www.thedreamersmaze.org/gedankenarchiv/projekte.html --> http://www.thedreamersmaze.org/projekte
ABER was NICHT geht, ist http://www.thedreamersmaze.org/gedankenarchiv/bloed.html. Da bleibt er hängen und ist beleidigt. Ich glaube, der Wurm steckt in den beiden Zeilen vor der aktuell auskommentierten... aber ich verstehʼs nicht. Ist es klüger, wenn ich zuerst das Unterverzeichnis entferne (falls vorhanden) und dann nach Unterstrichen suche, à la so:
-----------------------------------
RewriteCond %{REQUEST_URI} .html$
RewriteCond %{REQUEST_URI} /
RewriteRule oh_wow_&ndash_oh_weh_oh_weh.html$ /oh-wow-oh-weh-oh-weh [L,R=301]
RewriteRule ^(.*)/(.*)$ /$2
RewriteRule !(.*)(ae|oe|ue|_)(.*) - [S=5]
RewriteRule (.*)_(.*)$ $1-$2
RewriteRule (.*)ae(.*)$ $1ä$2
RewriteRule (.*)oe(.*)$ $1ö$2
RewriteRule (.*)ue(.*)$ $1ü$2
RewriteRule (.*)(ae|oe|ue|_)(.*)$ - [N]
RewriteRule ^(.*).html$ /$1 [L,R=301]
-----------------------------------
Und ähm... ich hab den Server gestern abend mit einer Endlosschleife in den Anweisungen komplett lahmgelegt, so dass mein Provider den Account deaktivieren musste... *mirsehrsehrpeinlich* von daher würd ich gerne einfach besser wissen, was ich tue, bevor ich es nochmal versuche.
Vielen Dank für jegliche Hilfe!
Anna~