Netzhexe: mod_rewrite Regel soll Unterverzeichnisse entfernen – tut nicht?

Beitrag lesen

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]

Umlaute... inspired by http://www.abakus-internet-marketing.de/foren/viewtopic/t-76764.html

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]

remove subdirectories

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~