Seite 1 von 2

mod_rewrite | Frage bezüglich Umlauten ...

Verfasst: 10.08.2012, 13:26
von klaraSand
Erstmal Hallo und ich hoffe doch ich bin hier richtig ...

Ich muss auch gleich sagen das ich bezüglich mod_rewrite noch ganz am Anfang stehe und mich sozusagen erst mal einwurschteln muss. Ich hatte mich nun schon ein wenig schlau gemacht und soweit auch alles ganz gut gelöst bekommen. Gleich vorweg ja es ist nötig Umlaute in den URLs zu haben und ae und anderes ist für mich keine Alternative auch wenn es viele nicht verstehen

Also erst mal soweit bin ich schon mal gekommen:

Code: Alles auswählen

RewriteRule ^(.*)\xC3\x84(.*)$ $1Ä$2 [N,E=utf8_fixed:1]
RewriteRule ^(.*)\xC3\xA4(.*)$ $1ä$2 [N,E=utf8_fixed:1]
RewriteRule ^(.*)\xC3\x96(.*)$ $1Ö$2 [N,E=utf8_fixed:1]
RewriteRule ^(.*)\xC3\xB6(.*)$ $1ö$2 [N,E=utf8_fixed:1]
RewriteRule ^(.*)\xC3\x9C(.*)$ $1Ü$2 [N,E=utf8_fixed:1]
RewriteRule ^(.*)\xC3\xBC(.*)$ $1ü$2 [N,E=utf8_fixed:1]
RewriteRule ^(.*)\xC3\x9F(.*)$ $1ß$2 [N,E=utf8_fixed:1]
Das funktioniert soweit auch wunderbar also Umlaute werden ersetzt und ich kann z.B. "/Müller/" in der URL verwenden und diese mit mod_rewrite "verarbeiten". Aber jetzt kommt das wo ich nicht weiter kommen - sollten zwei Umlaute vorkommen z.B. "/öß/" oder auch "/Müller-Müller/" dann funktioniert es nicht mehr. Auch wenn es mir fast schon unangenehm ist so komme ich einfach nicht weiter und hoffe das mir hier einer helfen kann ...

Natürlich wäre ich wie so viele dankbar für einen Code-Schnippsel aber noch dankbarer wäre ich für eine zusätzliche kleine Erklärung das ich es auch verstehen kann wo es bei mir aktuell hängt ...

Schon mal Danke für die Mühe und viele Grüße

Verfasst:
von

Verfasst: 10.08.2012, 17:16
von Melegrian
Das ist jetzt eine gute Frage. Also, gesucht wird ja in der ersten Zeile nach

(einem oder keinen beliebigen Zeichen) gefolgt von einem Ä (gefolgt von einem oder keinen beliebigen Zeichen)

Wobei der . Punkt für ein beliebiges Zeichen steht und das * Sternchen für 0 bis zu einer beliebigen Anzahl. Wenn nun einmal ein Ä vor und nach einem oder keinen beliebigen Zeichen gefunden wurde, so wurde die gestellte Aufgabe erfüllt und die Rule kann es sich wieder im Schaukelstuhl gemütlich machen und entspannen.

Bleibt die Frage, wie kann man die etwas gieriger aufs Arbeiten machen. Bei PHP wüsste ich es, hier müsste ich aber erst eine ganze Weile testen. Eventuell sollte es schon reichen, wenn das Muster geklammert wird, etwa so:

Code: Alles auswählen

RewriteRule ^(.*)(\xC3\x84){1,10}(.*)$  $1Ä$3 [N,E=utf8_fixed:1] 
Wobei das Ä {min,max} vorkommen {sollte, darf}. Die Inhalt der letzten Klammer wäre dann nicht mehr in $2, sondern in $3 enthalten. Ob es funktioniert, keine Ahnung, weiß ich nicht.

Verfasst: 10.08.2012, 17:30
von klaraSand
Melegrian hat geschrieben:... Ob es funktioniert, keine Ahnung, weiß ich nicht ...
Zuerst einmal es funktioniert nicht wobei der Ansatz nicht schlecht ist aber leider stoße ich da dann auch an meine Grenzen. So bin ich mir nicht mal sicher ob sich dies als "RewriteRule" umsetzen lässt. Aber dennoch danke für deine Mühen und eventuell kann ja noch jemand was dazu sagen. Ich geb auch nicht auf und versuch mich weiter etwas intensiver mit mod_Rewrite zu befassen und hoffe irgendwie der Lösung etwas näher zu kommen.

Verfasst:
von

Verfasst: 10.08.2012, 17:44
von Melegrian
Ich meine, eine URL wird ja keine beliebige Anzahl an Umlauten enthalten und so sollte es notfalls auch so gehen:

Code: Alles auswählen

RewriteRule ^(.*)(\xC3\x84){1}(.*)$  $1Ä$3 [N,E=utf8_fixed:1] 
RewriteRule ^(.*)(\xC3\x84)(.*)(\xC3\x84)(.*)$  $1Ä$3Ä$5 [N,E=utf8_fixed:1] 
RewriteRule ^(.*)(\xC3\x84)(.*)(\xC3\x84)(.*)(\xC3\x84)(.*)$  $1Ä$3Ä$5Ä$7 [N,E=utf8_fixed:1] 
RewriteRule ^(.*)(\xC3\xA4){1}(.*)$ ...
RewriteRule ^(.*)(\xC3\xA4)(.*)(\xC3\xA4)(.*)$ ...
RewriteRule ^(.*)(\xC3\xA4)(.*)(\xC3\xA4)(.*)(\xC3\xA4)(.*)$ ...

#usw.
Mehr dazu zum Beispiel auch hier: https://regexp-evaluator.de/tutorial/quantifier/

Verfasst: 10.08.2012, 18:49
von Synonym
Also vom Prinzip her braucht es keine Quantifier oder dergleichen, denn genau dafür ist das Flag N da.

Aber was mich gerade etwas stört bzw. ich es nicht wirklich weiß. Funktioniert das mit Umlauten überhaupt? Ich meine, Du suchst hier also nach UTF-8-kodierten Umlauten um diese dann mit den deutschen Umlauten zu ersetzen. Mit den ÖÄÜ kann der Server aber eigentlich nichts anfangen, denn die haben da auch nichts zu suchen. Dafür gibt es eben ISO, UFT8, ASCII-Kodierungen etc. Folglich werden die intern ja wieder kodiert. Wenn das dann wieder utf8 ist, dann müsste das eigentlich eine Endlosschleife ergeben.

Was mir auch auffällt.... Was macht Du den mit dem "E=utf8_fixed:1" Das E, also die ENV musst Du ja irgendwo erst noch verarbeiten, sonst macht die ja keinen Sinn.

Verfasst: 10.08.2012, 19:07
von klaraSand
Synonym hat geschrieben:Was mir auch auffällt ...
Das gehört alles zu einem Code-Schnippselchen welchen ich bekommen habe wobei ich wie gesagt noch nicht wirklich viel über mod_rewrite weiß und auch erst dank Melegrian zumindest zum Teil verstanden habe was da so passiert.

Also erst mal der Code:

Code: Alles auswählen

# Ä
RewriteRule ^(.*)\xC3\x84(.*)$ $1Ä$2 [N,E=utf8_fixed:1]
# ä
RewriteRule ^(.*)\xC3\xA4(.*)$ $1ä$2 [N,E=utf8_fixed:1]
# Ö
RewriteRule ^(.*)\xC3\x96(.*)$ $1Ö$2 [N,E=utf8_fixed:1]
# ö
RewriteRule ^(.*)\xC3\xB6(.*)$ $1ö$2 [N,E=utf8_fixed:1]
# Ü
RewriteRule ^(.*)\xC3\x9C(.*)$ $1Ü$2 [N,E=utf8_fixed:1]
# ü
RewriteRule ^(.*)\xC3\xBC(.*)$ $1ü$2 [N,E=utf8_fixed:1]
# ß
RewriteRule ^(.*)\xC3\x9F(.*)$ $1ß$2 [N,E=utf8_fixed:1]

RewriteCond %{ENV:utf8_fixed} 1
Hierbei ist es dann so das folgendes "perfekt" klappt:

Code: Alles auswählen

RewriteRule ^Mockau-Süd/Tischtennisplatten$ tischtennis.php?stadtteil=012 [L]
Also die URL wird im Browser korrekt angezeigt also so wie es sein soll.

Nehme ich aber folgenden Code:

Code: Alles auswählen

RewriteRule ^Lößnig/Tischtennisplatten$ tischtennis.php?stadtteil=043 [L]
oder auch

Code: Alles auswählen

RewriteRule ^Dölitz-Dösen/Tischtennisplatten$ tischtennis.php?stadtteil=044 [L]
Bekomme ich diese Fehlermeldungen:
The requested URL /Lößnig/Tischtennisplatten/Tischtennisplatten was not found on this server.
The requested URL /Dölitz-Dösen/Tischtennisplatten/Tischtennisplatten was not found on this server.
Und ich kann mir bei bestem Willen nicht erklären wie es da zu dem "doppelten" Verzeichnis kommt. Ist mir schon fast unangenehm euch hier mit meinen Fragen zu belästigen welche ganz sicher schon fast lächerlich sind. Ich würde nur sehr gerne die Umlaute in den URLs nutzen da es Stadtteile sind bzw. Straßennamen und ich da sehr ungerne "oe" oder ähnliches nutzen möchte.

Verfasst: 10.08.2012, 19:24
von chris21
Ah, das bringt einen schon weiter.

Da werden wohl beide Umlaute aufgelöst aber bei jeder Umlautauflösung passiert noch etwas.

Dadurch die Dopplung der Verzeichnisse.

Also am Besten mal die gesamte htaccess posten, dann können wir dem nachgehen.

Verfasst: 10.08.2012, 19:28
von klaraSand
chris21 hat geschrieben:Also am Besten mal die gesamte htaccess posten, dann können wir dem nachgehen.
Aber nicht lachen :P
RewriteEngine on

RewriteCond %{HTTP_HOST} !^meinleipzig\.eu$ [NC]
RewriteRule ^(.*)$ https://domain.de/$1 [R=301,L]

# Ä
RewriteRule ^(.*)\xC3\x84(.*)$ $1Ä$2 [N,E=utf8_fixed:1]
# ä
RewriteRule ^(.*)\xC3\xA4(.*)$ $1ä$2 [N,E=utf8_fixed:1]
# Ö
RewriteRule ^(.*)\xC3\x96(.*)$ $1Ö$2 [N,E=utf8_fixed:1]
# ö
RewriteRule ^(.*)\xC3\xB6(.*)$ $1ö$2 [N,E=utf8_fixed:1]
# Ü
RewriteRule ^(.*)\xC3\x9C(.*)$ $1Ü$2 [N,E=utf8_fixed:1]
# ü
RewriteRule ^(.*)\xC3\xBC(.*)$ $1ü$2 [N,E=utf8_fixed:1]
# ß
RewriteRule ^(.*)\xC3\x9F(.*)$ $1ß$2 [N,E=utf8_fixed:1]

RewriteCond %{ENV:utf8_fixed} 1

RewriteRule ^$ index.php [L]

RewriteRule ^Tischtennisplatten$ tischtennis.php [L]

RewriteRule ^Tischtennisplatten/Seite-(.*)$ tischtennis.php?se=$1 [L]


##########################################

RewriteRule ^Zentrum/Tischtennisplatten$ tischtennis.php?stadtteil=000 [L]
RewriteRule ^Zentrum/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=000&se=$1 [L]
Diese unteren 2 Zeilen wiederholen sich dann immer allerdings immer mit einem anderen Stadtteil. Da weiß ich aber wenigstens schon mal das ich das noch optimieren kann was ich auch in Angriff nehme wenn ich das mit den Umlauten irgendwie verstanden und in den Griff bekommen habe.

Verfasst: 10.08.2012, 19:49
von Melegrian
klaraSand hat geschrieben:Ist mir schon fast unangenehm euch hier mit meinen Fragen zu belästigen welche ganz sicher schon fast lächerlich sind.
Das braucht Dir nicht unangenehm zu sein, weil das zur Abwechslung mal wieder eine richtig gute Frage ist. Jedenfalls empfinde ich die Frage als eine gute Frage. Mit dem N habe ich ja gerade wieder etwas dazugelernt.

Verfasst: 10.08.2012, 20:25
von Synonym
@Melegrian
Jep, das ist mal eine wirklich interessante Frage ;)

So, auf das E= wollte ich schon mal hinaus:
RewriteCond %{ENV:utf8_fixed} 1

RewriteRule ^$ index.php [L]
Hier ist also die Cond mit der Bedingung bezüglich des ENV. Aber das macht keinen Sinn. Direkt nach der Cond, also in der nächsten Zeile muss eine Rule kommen, die dann ausgeführt wird, wenn ENV = 1 ist. Das Fehlt hier. In aller Regel kommt hier eine Weiterleitung. Also oben die Rules mit dem N, die in einer Schleife alle Ersetzungen vornehmen und dann danach, wenn ENV = 1 eben die Aktion, also die Weiterleitung. Das hast Du hier schon mal nicht. Wenn man nun denkt, gut, der hat da einfach eine Leerzeile zu viel und die darunter ist gemeint, die macht da aber auch keinen Sinn. Wenn Umlaute gefunden wurden, dann kann die URL ja nicht leer (^$) sein. Also da fehlt was.

Mir kommt der Code auch sehr bekannt vor... Ich sage nur Huschi...
https://www.huschi.net/10_36_de-mod-rew ... auten.html

Wegen den Umlauten. Ich muss das auch erst mal testen, aber nur mal so zwischendurch. Nur weil der Browser ein Ü anzeigt ist noch lange keines in der URL, das ist der Hacken an der Geschichte. Rufe mal wikikedia auf und suche nach "ü". Dort in der URL steht ein Ü (sichtbar), wenn Du aber die URL kopierst und um Editor anschaust, dann ist da kein Ü mehr ;)

Das von Chris ist allerdings auch ein Punkt.

Verfasst: 10.08.2012, 20:34
von klaraSand
Synonym hat geschrieben:... Dort in der URL steht ein Ü (sichtbar), wenn Du aber die URL kopierst und um Editor anschaust, dann ist da kein Ü mehr ;) ...
Da hast du natürlich recht das ist ja auch bei meinen URLs so worum es mir geht ist zum einen die Lesbarkeit für den Nutzer und gerade bei regionalen Eigennamen ist es nach meiner Erfahrung so das die "echte" Schreibweise mehr als nur bevorzugt wird. Das ist an sich auch der einzige Grund warum ich da so großen Wert drauf lege und eine Lösung finden möchte.

Für mich liegen zwischen z.B Lößnig und Loessnig Welten ...
Und mal ehrlich es schaut auch irgendwie nicht wirklich schick aus.
Synonym hat geschrieben:Mir kommt der Code auch sehr bekannt vor... Ich sage nur Huschi...
https://www.huschi.net/10_36_de-mod-rew ... auten.html
Ich hatte das Schnippselchen "zugesteckt" bekommen also kann sehr gut sein das es dort her ist wobei ich sehe (Kommentar) das "mein" Fehler wohl ganz normal ist bei dem Code in dieser Ausführung ...

Ich danke schon mal sehr für die Hilfe und denke doch das sich sicher eine Lösung findet welche vielleicht auch für den ein oder anderen ebenfalls interessant ist. Besonders regional denke ich das dies den ein oder anderen Vorteil mit sich bringen kann.

Hier mal die komplett Datei eventuell hat sich da ein Fehler eingeschlichen:

RewriteEngine on

RewriteCond %{HTTP_HOST} !^meinleipzig\.eu$ [NC]
RewriteRule ^(.*)$ https://domain.de/$1 [R=301,L]


RewriteRule ^$ index.php [L]

RewriteRule ^Tischtennisplatten$ tischtennis.php [L]
RewriteRule ^Tischtennisplatten/Seite-(.*)$ tischtennis.php?se=$1 [L]

# Ä
RewriteRule ^(.*)\xC3\x84(.*)$ $1Ä$2 [N,E=utf8_fixed:1]
# ä
RewriteRule ^(.*)\xC3\xA4(.*)$ $1ä$2 [N,E=utf8_fixed:1]
# Ö
RewriteRule ^(.*)\xC3\x96(.*)$ $1Ö$2 [N,E=utf8_fixed:1]
# ö
RewriteRule ^(.*)\xC3\xB6(.*)$ $1ö$2 [N,E=utf8_fixed:1]
# Ü
RewriteRule ^(.*)\xC3\x9C(.*)$ $1Ü$2 [N,E=utf8_fixed:1]
# ü
RewriteRule ^(.*)\xC3\xBC(.*)$ $1ü$2 [N,E=utf8_fixed:1]
# ß
RewriteRule ^(.*)\xC3\x9F(.*)$ $1ß$2 [N,E=utf8_fixed:1]

RewriteCond %{ENV:utf8_fixed} 1

##########################################

RewriteRule ^Zentrum/Tischtennisplatten$ tischtennis.php?stadtteil=000 [L]
RewriteRule ^Zentrum/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=000&se=$1 [L]

RewriteRule ^Zentrum-Ost/Tischtennisplatten$ tischtennis.php?stadtteil=001 [L]
RewriteRule ^Zentrum-Ost/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=001&se=$1 [L]

RewriteRule ^Zentrum-Südost/Tischtennisplatten$ tischtennis.php?stadtteil=002 [L]
RewriteRule ^Zentrum-Südost/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=002&se=$1 [L]

RewriteRule ^Zentrum-Süd/Tischtennisplatten$ tischtennis.php?stadtteil=003 [L]
RewriteRule ^Zentrum-Süd/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=003&se=$1 [L]

RewriteRule ^Zentrum-West/Tischtennisplatten$ tischtennis.php?stadtteil=004 [L]
RewriteRule ^Zentrum-West/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=004&se=$1 [L]

RewriteRule ^Zentrum-Nord/Tischtennisplatten$ tischtennis.php?stadtteil=006 [L]
RewriteRule ^Zentrum-Nord/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=006&se=$1 [L]

RewriteRule ^Zentrum-Nordwest/Tischtennisplatten$ tischtennis.php?stadtteil=005 [L]
RewriteRule ^Zentrum-Nordwest/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=005&se=$1 [L]

##########################################

RewriteRule ^Thekla/Tischtennisplatten$ tischtennis.php?stadtteil=014 [L]
RewriteRule ^Thekla/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=014&se=$1 [L]

RewriteRule ^Schönefeld-Abtnaundorf/Tischtennisplatten$ tischtennis.php?stadtteil=010 [L]
RewriteRule ^Schönefeld-Abtnaundorf/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=010&se=$1 [L]

RewriteRule ^Schönefeld-Ost/Tischtennisplatten$ tischtennis.php?stadtteil=011 [L]
RewriteRule ^Schönefeld-Ost/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=011&se=$1 [L]

RewriteRule ^Mockau-Süd/Tischtennisplatten$ tischtennis.php?stadtteil=012 [L]
RewriteRule ^Mockau-Süd/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=012&se=$1 [L]

RewriteRule ^Mockau-Nord/Tischtennisplatten$ tischtennis.php?stadtteil=013 [L]
RewriteRule ^Mockau-Nord/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=013&se=$1 [L]

RewriteRule ^Plaußig-Portitz/Tischtennisplatten$ tischtennis.php?stadtteil=015 [L]
RewriteRule ^Plaußig-Portitz/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=015&se=$1 [L]

##########################################

RewriteRule ^Neustadt-Neuschönefeld/Tischtennisplatten$ tischtennis.php?stadtteil=020 [L]
RewriteRule ^Neustadt-Neuschönefeld/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=020&se=$1 [L]

RewriteRule ^Volkmarsdorf/Tischtennisplatten$ tischtennis.php?stadtteil=021 [L]
RewriteRule ^Volkmarsdorf/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=021&se=$1 [L]

RewriteRule ^Anger-Crottendorf/Tischtennisplatten$ tischtennis.php?stadtteil=022 [L]
RewriteRule ^Anger-Crottendorf/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=022&se=$1 [L]

RewriteRule ^Sellerhausen-Stünz/Tischtennisplatten$ tischtennis.php?stadtteil=023 [L]
RewriteRule ^Sellerhausen-Stünz/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=023&se=$1 [L]

RewriteRule ^Heiterblick/Tischtennisplatten$ tischtennis.php?stadtteil=025 [L]
RewriteRule ^Heiterblick/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=025&se=$1 [L]

RewriteRule ^Paunsdorf/Tischtennisplatten$ tischtennis.php?stadtteil=024 [L]
RewriteRule ^Paunsdorf/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=024&se=$1 [L]

RewriteRule ^Mölkau/Tischtennisplatten$ tischtennis.php?stadtteil=026 [L]
RewriteRule ^Mölkau/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=026&se=$1 [L]

RewriteRule ^Engelsdorf/Tischtennisplatten$ tischtennis.php?stadtteil=027 [L]
RewriteRule ^Engelsdorf/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=027&se=$1 [L]

RewriteRule ^Baalsdorf/Tischtennisplatten$ tischtennis.php?stadtteil=028 [L]
RewriteRule ^Baalsdorf/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=028&se=$1 [L]

RewriteRule ^Althen-Kleinpösna/Tischtennisplatten$ tischtennis.php?stadtteil=029 [L]
RewriteRule ^Althen-Kleinpösna/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=029&se=$1 [L]

##########################################

RewriteRule ^Reudnitz-Thonberg/Tischtennisplatten$ tischtennis.php?stadtteil=030 [L]
RewriteRule ^Reudnitz-Thonberg/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=030&se=$1 [L]

RewriteRule ^Reudnitz-Thonberg/Tischtennisplatte-(.*)-(.*)$ aaa.php?stadtteil=030&aaa=$1&bbb=$2 [L]

RewriteRule ^Stötteritz/Tischtennisplatten$ tischtennis.php?stadtteil=031 [L]
RewriteRule ^Stötteritz/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=031&se=$1 [L]

RewriteRule ^Probstheida/Tischtennisplatten$ tischtennis.php?stadtteil=032 [L]
RewriteRule ^Probstheida/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=032&se=$1 [L]

RewriteRule ^Meusdorf/Tischtennisplatten$ tischtennis.php?stadtteil=033 [L]
RewriteRule ^Meusdorf/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=033&se=$1 [L]

RewriteRule ^Liebertwolkwitz/Tischtennisplatten$ tischtennis.php?stadtteil=034 [L]
RewriteRule ^Liebertwolkwitz/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=034&se=$1 [L]

RewriteRule ^Holzhausen/Tischtennisplatten$ tischtennis.php?stadtteil=035 [L]
RewriteRule ^Holzhausen/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=035&se=$1 [L]

##########################################

RewriteRule ^Südvorstadt/Tischtennisplatten$ tischtennis.php?stadtteil=040 [L]
RewriteRule ^Südvorstadt/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=040&se=$1 [L]

RewriteRule ^Connewitz/Tischtennisplatten$ tischtennis.php?stadtteil=041 [L]
RewriteRule ^Connewitz/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=041&se=$1 [L]

RewriteRule ^Lößnig/Tischtennisplatten$ tischtennis.php?stadtteil=043 [L]
RewriteRule ^Lößnig/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=043&se=$1 [L]

RewriteRule ^Marienbrunn/Tischtennisplatten$ tischtennis.php?stadtteil=042 [L]
RewriteRule ^Marienbrunn/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=042&se=$1 [L]

RewriteRule ^Dölitz-Dösen/Tischtennisplatten$ tischtennis.php?stadtteil=044 [L]
RewriteRule ^Dölitz-Dösen/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=044&se=$1 [L]

##########################################

RewriteRule ^Schleußig/Tischtennisplatten$ tischtennis.php?stadtteil=050 [L]
RewriteRule ^Schleußig/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=050&se=$1 [L]

RewriteRule ^Plagwitz/Tischtennisplatten$ tischtennis.php?stadtteil=051 [L]
RewriteRule ^Plagwitz/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=051&se=$1 [L]

RewriteRule ^Kleinzschocher/Tischtennisplatten$ tischtennis.php?stadtteil=052 [L]
RewriteRule ^Kleinzschocher/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=052&se=$1 [L]

RewriteRule ^Großzschocher/Tischtennisplatten$ tischtennis.php?stadtteil=053 [L]
RewriteRule ^Großzschocher/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=053&se=$1 [L]

RewriteRule ^Knautkleeberg-Knauthain/Tischtennisplatten$ tischtennis.php?stadtteil=054 [L]
RewriteRule ^Knautkleeberg-Knauthain/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=054&se=$1 [L]

RewriteRule ^Hartmannsdorf-Knautnaundorf/Tischtennisplatten$ tischtennis.php?stadtteil=055 [L]
RewriteRule ^Hartmannsdorf-Knautnaundorf/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=055&se=$1 [L]

##########################################

RewriteRule ^Schönau/Tischtennisplatten$ tischtennis.php?stadtteil=060 [L]
RewriteRule ^Schönau/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=060&se=$1 [L]

RewriteRule ^Grünau-Ost/Tischtennisplatten$ tischtennis.php?stadtteil=061 [L]
RewriteRule ^Grünau-Ost/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=061&se=$1 [L]

RewriteRule ^Grünau-Mitte/Tischtennisplatten$ tischtennis.php?stadtteil=062 [L]
RewriteRule ^Grünau-Mitte/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=062&se=$1 [L]

RewriteRule ^Grünau-Siedlung/Tischtennisplatten$ tischtennis.php?stadtteil=063 [L]
RewriteRule ^Grünau-Siedlung/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=063&se=$1 [L]

RewriteRule ^Lausen-Grünau/Tischtennisplatten$ tischtennis.php?stadtteil=064 [L]
RewriteRule ^Lausen-Grünau/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=064&se=$1 [L]

RewriteRule ^Grünau-Nord/Tischtennisplatten$ tischtennis.php?stadtteil=065 [L]
RewriteRule ^Grünau-Nord/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=065&se=$1 [L]

RewriteRule ^Miltitz/Tischtennisplatten$ tischtennis.php?stadtteil=066 [L]
RewriteRule ^Miltitz/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=066&se=$1 [L]

##########################################

RewriteRule ^Lindenau/Tischtennisplatten$ tischtennis.php?stadtteil=070 [L]
RewriteRule ^Lindenau/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=070&se=$1 [L]

RewriteRule ^Altlindenau/Tischtennisplatten$ tischtennis.php?stadtteil=071 [L]
RewriteRule ^Altlindenau/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=071&se=$1 [L]

RewriteRule ^Neulindenau/Tischtennisplatten$ tischtennis.php?stadtteil=072 [L]
RewriteRule ^Neulindenau/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=072&se=$1 [L]

RewriteRule ^Böhlitz-Ehrenberg/Tischtennisplatten$ tischtennis.php?stadtteil=074 [L]
RewriteRule ^Böhlitz-Ehrenberg/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=074&se=$1 [L]

RewriteRule ^Leutzsch/Tischtennisplatten$ tischtennis.php?stadtteil=073 [L]
RewriteRule ^Leutzsch/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=073&se=$1 [L]

RewriteRule ^Burghausen-Rückmarsdorf/Tischtennisplatten$ tischtennis.php?stadtteil=075 [L]
RewriteRule ^Burghausen-Rückmarsdorf/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=075&se=$1 [L]

##########################################

RewriteRule ^Möckern/Tischtennisplatten$ tischtennis.php?stadtteil=080 [L]
RewriteRule ^Möckern/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=080&se=$1 [L]

RewriteRule ^Wahren/Tischtennisplatten$ tischtennis.php?stadtteil=081 [L]
RewriteRule ^Wahren/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=081&se=$1 [L]

RewriteRule ^Lützschena-Stahmeln/Tischtennisplatten$ tischtennis.php?stadtteil=082 [L]
RewriteRule ^Lützschena-Stahmeln/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=082&se=$1 [L]

RewriteRule ^Lindenthal/Tischtennisplatten$ tischtennis.php?stadtteil=083 [L]
RewriteRule ^Lindenthal/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=083&se=$1 [L]

##########################################

RewriteRule ^Gohlis-Süd/Tischtennisplatten$ tischtennis.php?stadtteil=090 [L]
RewriteRule ^Gohlis-Süd/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=090&se=$1 [L]

RewriteRule ^Gohlis-Mitte/Tischtennisplatten$ tischtennis.php?stadtteil=091 [L]
RewriteRule ^Gohlis-Mitte/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=091&se=$1 [L]

RewriteRule ^Gohlis-Nord/Tischtennisplatten$ tischtennis.php?stadtteil=092 [L]
RewriteRule ^Gohlis-Nord/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=092&se=$1 [L]

RewriteRule ^Eutritzsch/Tischtennisplatten$ tischtennis.php?stadtteil=093 [L]
RewriteRule ^Eutritzsch/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=093&se=$1 [L]

RewriteRule ^Seehausen/Tischtennisplatten$ tischtennis.php?stadtteil=094 [L]
RewriteRule ^Seehausen/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=094&se=$1 [L]

RewriteRule ^Wiederitzsch/Tischtennisplatten$ tischtennis.php?stadtteil=095 [L]
RewriteRule ^Wiederitzsch/Tischtennisplatten/Seite-(.*)$ tischtennis.php?stadtteil=095&se=$1 [L]

##########################################
Das ich die ganzen 2er Pärchen auch auf 2 reduzieren kann bin ich mir fast sicher und ich hatte das alles nur so aufgedrösselt um den "Fehler" zu finden was aber nicht wirklich was gebracht hat.

Verfasst: 10.08.2012, 20:50
von Synonym
Für mich liegen zwischen z.B Lößnig und Loessnig Welten ...
Klar, das ist ja auch was anderes.

Aber ich sehe ehrlich gesagt bei Dir noch keinen Sinn / Grund, das zu tun. Die Leute können doch in den Browser ein Ö eintragen. Der setzte das dann um und Dein Server verarbeitet es. Der liefert dann wieder kodiert zurück und der Browser zeigt es dekodiert wieder an. Letzteres machen aber ganz alte Browser nicht, bei denen sieht man dann z.B. %C3%B6 und kein "ö". Nur, die echten Zeichen ÖÜÄ sind in der URL gar nicht zulässig. Die bekommst Du da auch nicht rein, der Webserver oder der Browser kodieren die immer.

Rufe einfach https://de.wikipedia.org/wiki/ auf und dippsel "Lößnig" hinter das /wiki/. Das ist doch das, was Du möchtest. Eben dass Besucher die Sonderzeichen eintippen können, oder? Und genau das geht doch.

Verfasst: 10.08.2012, 20:52
von Synonym
Nachtrag:
Das mit den doppelten Ordnernamen kommt schon bei der Zeile hier:

RewriteRule ^(.*)\xC3\x96(.*)$ $1Ö$2 [N,E=utf8_fixed:1]

Die Rule ist eigentlich auch nicht dafür gedacht, ganze URLs zu ersetzen, sondern Dateinamen, also keine URLs mit Verzeichnissen.

Beachte: Flag N
The [N] flag causes the ruleset to start over again from the top, using the result of the ruleset so far as a starting point. Use with extreme caution, as it may result in loop.

Verfasst: 10.08.2012, 20:57
von klaraSand
Synonym hat geschrieben:Rufe einfach https://de.wikipedia.org/wiki/ auf und dippsel "Lößnig" hinter das /wiki/. Das ist doch das, was Du möchtest. Eben dass Besucher die Sonderzeichen eintippen können, oder? Und genau das geht doch.
Ja das ist es was ich möchte also das ich URLs verwenden kann wie:
https://domain.de/Lößnig/Tischtennisplatte/Münzstraße

Aber um ehrlich zu sein nahm ich bis grade an das es genau das ist was ich hier versuche. Also ich möchte mittels mod_rewrite es so hinbekommen das ich auf meiner Seite z.B. diesen Link: "https://domain.de/Lößnig/Tischtennisplatte/Münzstraße" setze und er wird weitergeleitet mittels mod_rewrite auf "tischtennis.php?aaa=XXX&bb=YYY". Und das ist es doch auch was ich versuche oder steh ich da nun mal komplett auf dem Schlauch?

Verfasst: 10.08.2012, 20:58
von Melegrian
Ich weiß zwar nicht was da bei Dir falsch läuft, doch bei mir funktioniert es unter Localhost. Habe für die Testanordnung alles etwas umgeändert, doch das Prinzip bleibt ja. Die URLs mit den Umlauten bleiben auch sauber in der Browserzeile stehen.

Code: Alles auswählen

RewriteEngine on

# Ä
RewriteRule ^(.*)\xC3\x84(.*)$ $1Ä$2 [N,E=utf8_fixed:1]
# ä
RewriteRule ^(.*)\xC3\xA4(.*)$ $1ä$2 [N,E=utf8_fixed:1]
# Ö
RewriteRule ^(.*)\xC3\x96(.*)$ $1Ö$2 [N,E=utf8_fixed:1]
# ö
RewriteRule ^(.*)\xC3\xB6(.*)$ $1ö$2 [N,E=utf8_fixed:1]
# Ü
RewriteRule ^(.*)\xC3\x9C(.*)$ $1Ü$2 [N,E=utf8_fixed:1]
# ü
RewriteRule ^(.*)\xC3\xBC(.*)$ $1ü$2 [N,E=utf8_fixed:1]
# ß
RewriteRule ^(.*)\xC3\x9F(.*)$ $1ß$2 [N,E=utf8_fixed:1]

RewriteCond %{ENV:utf8_fixed} 1

RewriteRule ^Mockau-Süd.html$ /tischtennis.php?stadtteil=01 [L]
RewriteRule ^Lößnig.html$ /tischtennis.php?stadtteil=02 [L]
RewriteRule ^Dölitz-Dösen.html$ /tischtennis.php?stadtteil=03 [L]
Die Datei tischtennis.php:

Code: Alles auswählen

<!DOCTYPE html>
<html>

<head>
<title>Mein Test</title>
</head>

<body>

<?php

echo $_GET&#91;"stadtteil"&#93;;

/*
http&#58;//localhost/Mockau-Süd.html
http&#58;//localhost/Lößnig.html
http&#58;//localhost/Dölitz-Dösen.html

Ausgabe&#58;

01
02
03

*/
?>
</body>
</html>