Seite 1 von 1

Pluszeichen in Bindestrich umschreiben

Verfasst: 28.04.2016, 00:05
von kpl51
Hallo,

nach dem Relaunch meiner Website muss ich die Dateistruktur anpassen. So gibt es eine Gruppe von Dateien, die auf eine neue umgeleitet werden muss.

So soll die Datei

mietverwaltung-Bokensdorf_NDS.html

geleitet werden an die neue Adresse

orte/hausverwaltung-bokensdorf_nds/

Das mache ich mit der folgenden Zeile in der .htaccess:
hausverwaltung-(.*)_(.*).html$ orte/hausverwaltung-$1_$2/ [L=301]

Soweit klappt das. Bis dann ein Ortsname auftaucht, der aus mehreren Wörtern besteht. Dann kommt der Request an mit

mietverwaltung-Neu+Bokensdorf_NDS.html

und soll zu

orte/hausverwaltung-neu-bokensdorf_nds/

Ich schaffe es einfach nicht, das Plus-Zeichen (URL-Code %2B) zu einem Bindestrich umzuschreiben.

Hat jemand 'ne Ahnung, was ich da tun mus?

Besten Dank von Klaus

Verfasst:
von

Verfasst: 28.04.2016, 01:18
von nerd
Ich glaube das pluszeichen was du in der URL siehst war urspruenglich ein leerzeichen. Leerzeichen sind in URLs nicht erlaubt, und werden entweder in "+"oder "%20" umgeschrieben (bin jetzt nicht genau sicher, was wann gemacht wird...).

Soll heissen du muesstest in deiner htaccess nach leerzeichen suchen, nicht nach + zeichen :)

Problem gelöst

Verfasst: 28.04.2016, 09:08
von kpl51
Das war genau der richtige Denkanstoß......

Vielen Dank dafür!

Es funktioniert jetzt so:
Suchstring =
^hausverwaltung-([a-zA-Z0-9]+)([\+]+)([a-zA-Z0-9]+)_([a-zA-Z0-9]+).html$

Dann lässt sich das Leerzeichen, so, wie ich es brauche, in einen Gedankenstrich (-) umschreiben.

Jetzt ist auch noch ein Problem mit den Umlauten aufgetaucht :(

Verfasst: 28.04.2016, 10:59
von SloMo
Diese Effekte sind wohl immer nur durch gezieltes Ausprobieren ;) zu lösen. Gerade bei Umlauten und UTF-8 vs. ISO-schießmichtot hängt es nicht nur vom Umschreiben ab, sondern auch von der späteren Verarbeitung im CMS. Wenn das CMS noch selbst Umleitungen vornimmt, ist das Chaos meist perfekt... also testen, testen, testen und möglichst keinen Fall übersehen.

Umlaute umschreiben

Verfasst: 28.04.2016, 12:06
von kpl51
Ich habe übrigens ein Code-Snippet gefunden, dass mir alle Umlaute und das "ß" in "ae", "oe" usw. wandelt:

Code: Alles auswählen

RewriteEngine on

RewriteRule ^(.*)(ä|Ä|ä|Ä)(.*) /$1ae$3 [L,R=301]
RewriteRule ^(.*)(ö|Ö|ö|Ö)(.*) /$1oe$3 [L,R=301]
RewriteRule ^(.*)(ü|ý|ü|Ü)(.*) /$1ue$3 [L,R=301]
RewriteRule ^(.*)(ß|ß)(.*) /$1ss$3 [L,R=301]
Und das läuft prima!