Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
lck
Posts: 2971
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by lck » Thu Nov 02, 2023 11:08 am

Michael_G wrote:
Wed Nov 01, 2023 10:14 pm
olape wrote:
Wed Nov 01, 2023 1:13 pm
lck wrote:
Wed Nov 01, 2023 11:58 am
Genau, das passiert bei meinem geposteten Vorschlag.
Versuche es mal so:

Code: Select all

header('Location: https://' . $_SERVER['HTTP_HOST'] . '/' . strtolower($url) . $params, true, 301);
zu

Code: Select all

header('Location: https://' . $_SERVER['HTTP_HOST'] . '/' . $url . strtolower($params) , true, 301);
Vielleicht geht das besser.
Aber, auch hier kann es Probleme geben, wenn i.e. Namen im Query weitergegeben werden.
-> ...&name=Meier&vorname=Max&... dann würde auch das in Kleinbuchstaben gewandelt.
Danke für den Vorschlag, werde ich testen.
Edit: funktioniert leider nicht.
Wichtig ist hier nach Änderungen in der .htaccess oder php-Datei, immer erst den Browsercache komplett löschen! Das hatte ich anfangs auch nicht bedacht. Lokal unter Xampp muss auch der Apache gestoppt und dann wieder gestartet werden.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

olape
Posts: 2752
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by olape » Thu Nov 02, 2023 11:15 am

lck wrote:
Thu Nov 02, 2023 11:04 am
Versuch einen Ordner names "Test" in ./userfiles/ aufzurufen.
lck wrote:
Thu Nov 02, 2023 11:04 am
Not Found
The requested URL was not found on this server.
OK, aber das soll ja mit der beschriebenen Änderung gar nicht funktionieren.
Das sollte doch aber mit der originalen php-Datei funktionieren.
Es ging ja gerade darum, Pfadangaben nicht zu ändern, sondern nur den QueryString.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

lck
Posts: 2971
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by lck » Thu Nov 02, 2023 11:39 am

olape wrote:
Thu Nov 02, 2023 11:15 am
Es ging ja gerade darum, Pfadangaben nicht zu ändern, sondern nur den QueryString.
Bevor wir hier lange rumrätseln, ein konkretes Beispiel/URL oder auch mehrere wären sehr hilfreich (@Michael_G).
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

olape
Posts: 2752
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by olape » Thu Nov 02, 2023 12:31 pm

Ohne das jetzt lang und breit getestet zu haben, als schneller Entwurf.

Einfach und ausschließlich diese Datei in /cmsimple/ ablegen.
Ist jetzt noch mit 302 zum Testen. Daraus müsste dann eine 301 gemacht werden.

aktueller Download
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

Michael_G
Posts: 191
Joined: Thu Feb 18, 2016 11:01 pm
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by Michael_G » Thu Nov 02, 2023 8:11 pm

olape wrote:
Thu Nov 02, 2023 6:59 am
Man müsste also versuchen, den Query-String bis zum ersten "=" zu begrenzen.
Das sollte die ungewollte Wandlung weiterer Parameter unterbinden.
Vielen Dank! Das war es!
Beim Aufruf des CKEditors wird das wohl ebenfalls benutzt, aber man sieht davon nichts.

Hier die inzwischen getestete einwandfrei laufende Lösung mit Erklärungen:

Ausschnitt aus der .htaccess-Datei:

Code: Select all

 #Script #1: URI in Kleinbuchstaben (Dateinamen unverändert) seit 26.03.2021
	RewriteCond %{REQUEST_URI} !\.\w{2,4}$
	RewriteCond expr "tolower(%{REQUEST_URI}) =~ /(.*)/"
	RewriteRule [A-Z] %1 [R=301,L]
Dieses Script sorgt dafür, dass sämtliche Großbuchstaben in URLs (außer in Verzeichnissen o. Dateien) in Kleinbuchstaben umgewandelt werden. Greift leider nicht bei Query-Strings, aber hier kommt das folgende Script ins Spiel, welches dank Olaf nun alles abdeckt:

Code: Select all

#Script #2: Query-Strings in Kleinbuchstaben
	RewriteCond %{REQUEST_URI} (de|en)?
	RewriteCond %{QUERY_STRING} [A-Z]
	RewriteCond %{QUERY_STRING} (.*)
	RewriteCond %{QUERY_STRING} !=
	RewriteRule (.*) $1%1 [R=301,QSD,L]
Erklärung Script #2:
Zeile 1: URLs in Sprachen (de/en) werden erfasst, die passende zwischengespeichert in Variable $1. „?” für fehlenden Sprachordner.
Zeile 2: Script greift nur, wenn Großbuchstaben enthalten sind.
Zeile 3: Damit das Script sich nicht nur die Großbuchstaben schnappt und den Rest abschneidet (!), muss diese Zeile sein. ;-)
Zeile 4: Ausschlusskriterium! Wenn die URL ein „=” enthält, wird das Script nicht gestartet, stört also weder CKEditor noch Suche etc.
Zeile 5: Permanente Umleitung unter Berücksichtigung des Sprachordners.
Dabei „sammelt (.*) alles ein” und der Tag „QSD” entfernt den Query-String.
Auf diese Art entsteht eine Umschreibung des Query-Strings in drei Schritten:
Schritt 1: Entfernung des Fragezeichens aus der „URL”.
Schritt 2: Da es nun kein Query-String mehr ist, greift Script #1 und wandelt sämtliche Großbuchstaben um.
Schritt 3: Da ich mittels separatem Script Page Requests ohne „?” umwandle, wird auch diese URL schließlich wieder zum Query-String.
Ciao
Michael

Let's Encrypt!

Michael_G
Posts: 191
Joined: Thu Feb 18, 2016 11:01 pm
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by Michael_G » Thu Nov 02, 2023 8:27 pm

olape wrote:
Thu Nov 02, 2023 12:31 pm
Ohne das jetzt lang und breit getestet zu haben, als schneller Entwurf.

Einfach und ausschließlich diese Datei in /cmsimple/ ablegen.
Ist jetzt noch mit 302 zum Testen. Daraus müsste dann eine 301 gemacht werden.

userprelude.zip
Vielen Dank dafür, dass Du Dir Gedanken zu gemacht hast und für die Zeit.
Funktioniert so leider nur ohne Sprachordner.

Ich hatte auch schon die Idee, dass man das in einer userfunctions.php oder besser userprelude.php unterbringen könnte, aber mangels ausreichender PHP-Kenntnisse konnte ich das nicht umsetzen.

Meine Lösung für Apache-Webserver ist eher ein Workaround, da sie drei Redirects benötigt.
Deine fast optimale Lösung mit der userprelude.php ist plattformunabhängiger und kann nach Perfektionierung auch noch anderen helfen, die ebenfalls von „Normalschreibung” von URLs auf „Kleinschreibung” ändern wollen und wegen der Problematik noch warten.

Wenn Du jetzt noch weißt, wie man da den Sprachordner mit reinbringt, ist die Lösung perfekt!
Last edited by Michael_G on Thu Nov 02, 2023 9:16 pm, edited 1 time in total.
Ciao
Michael

Let's Encrypt!

Michael_G
Posts: 191
Joined: Thu Feb 18, 2016 11:01 pm
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by Michael_G » Thu Nov 02, 2023 8:30 pm

olape wrote:
Thu Nov 02, 2023 6:59 am
Michael_G wrote:
Wed Nov 01, 2023 10:14 pm
Edit: funktioniert leider nicht.
Was funktioniert nicht?
Der Pfad war fehlerhaft, es fehlte ein / in der URL.
Hätte nur mit einem Menülevel fehlerfrei funktioniert.
Ciao
Michael

Let's Encrypt!

Michael_G
Posts: 191
Joined: Thu Feb 18, 2016 11:01 pm
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by Michael_G » Thu Nov 02, 2023 8:41 pm

lck wrote:
Thu Nov 02, 2023 11:39 am
olape wrote:
Thu Nov 02, 2023 11:15 am
Es ging ja gerade darum, Pfadangaben nicht zu ändern, sondern nur den QueryString.
Bevor wir hier lange rumrätseln, ein konkretes Beispiel/URL oder auch mehrere wären sehr hilfreich (@Michael_G).
Siehe mein Profil, nennt eines meiner beiden Websites. ;-)
Und weil dank eurer Mithilfe Lösungen gefunden wurden, ist zumindest mein Workaround dort schon realisiert. :)

Sobald Olafs userprelude.php auch Sprachordner berücksichtigt, stelle ich darauf um. Dann braucht es für falsche Page Requests nur noch einen Rewrite (301) anstatt drei. :)

Hier noch ein Ausschnitt aus meiner .htaccess, diese Scripts stehen weiter unterhalb der hier diskutierten Abschnitte und fangen sämtliche Page Requests mit fehlendem Sprachordner oder fehlendem „?” ab und ergänzen sie.
Hilfreich für alle, die vor CMSimple_XH ein anderes CMS benutzt haben oder erst nachträglich auf Mehrsprachigkeit umstellen (wollen).

Code: Select all

#DE Sprache menüabhängig | seit 25.05.2023 | optimal: 17.09.2023
	RewriteRule (neu|literatur|gastronomie|glossar|hilfe|ueber|datenschutz|impressum)/(.*)	de/?$1/$2	[R=301,L]
	RewriteRule (neu|literatur|gastronomie|glossar|hilfe|ueber|datenschutz|impressum)$		de/?$1		[R=301,L]

#EN Sprache menüabhängig | seit 25.05.2023 | optimal: 17.09.2023
	RewriteRule (new|literature|gastronomy|glossary|help|about|privacy|legal)/(.*)			en/?$1/$2	[R=301,L]
	RewriteRule (new|literature|gastronomy|glossary|help|about|privacy|legal)$				en/?$1		[R=301,L]

#DE Sprache menüabhängig | QUERY_STRING | seit 28.05.2023 | optimal: 17.09.2023
	RewriteCond %{QUERY_STRING} (neu|literatur|gastronomie|glossar|hilfe|ueber|datenschutz|impressum)/(.*)	[NC]
	RewriteRule ^$ /de/	[R=301,L]
	RewriteCond %{QUERY_STRING} (neu|literatur|gastronomie|glossar|hilfe|ueber|datenschutz|impressum)$		[NC]
	RewriteRule ^$ /de/	[R=301,L]

#EN Sprache menüabhängig | QUERY_STRING | seit 28.05.2023 | optimal: 17.09.2023
	RewriteCond %{QUERY_STRING} (new|literature|gastronomy|glossary|help|about|privacy|legal)/(.*)			[NC]
	RewriteRule ^$ /en/	[R=301,L]
	RewriteCond %{QUERY_STRING} (new|literature|gastronomy|glossary|help|about|privacy|legal)$				[NC]
	RewriteRule ^$ /en/	[R=301,L]
Last edited by Michael_G on Fri Nov 03, 2023 6:29 pm, edited 1 time in total.
Ciao
Michael

Let's Encrypt!

olape
Posts: 2752
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by olape » Fri Nov 03, 2023 6:51 am

Michael_G wrote:
Thu Nov 02, 2023 8:27 pm
Funktioniert so leider nur ohne Sprachordner.
Bei mir funktioniert das auch in Zweitsprachen ganz problemlos.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

olape
Posts: 2752
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Seitenabfragen mit Großbuchstaben in Kleinbuchstaben umwandeln

Post by olape » Fri Nov 03, 2023 10:56 am

olape wrote:
Fri Nov 03, 2023 6:51 am
Bei mir funktioniert das auch in Zweitsprachen ganz problemlos.
Ich habe es mal bei https://wiki.cmsimple-xh.org/ hinterlegt, da kann also jeder selber testen, ob es funktioniert.
olape wrote:
Wed Nov 01, 2023 1:13 pm
Aber, auch hier kann es Probleme geben, wenn i.e. Namen im Query weitergegeben werden.
-> ...&name=Meier&vorname=Max&... dann würde auch das in Kleinbuchstaben gewandelt.
Das sollte auch zu 99,9% behoben sein.

Das alles macht natürlich nur Sinn, wenn die URI wirklich nur korrekte Zeichen enthält.
Also [A-Z], [a-z], [0-9],/,-,_,+. Womit wir wieder bei einem anderen Thema wären.
You do not have the required permissions to view the files attached to this post.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

Post Reply