URL Verschönerungs mit .htaccess
-
29-09-2019 - |
Frage
auf der Suche nach einem anwenderfreundliche URL , wie erreiche ich beide der folgenden, elegant mit nur .htaccess?
/ en / somepage
gehen /somepage?ln=de
/ zh-CN / somepage # 7
gehen /somepage?ln=zh-CN#7
Zusammenfassung:
/ [Sprache] / [pagefilenameWithoutExtension] [optional Anker #] [eine Zahl von 0-9]
laden soll (ohne URL zu ändern)
/ [pagefilenameWithoutExtension]? Ln = [Sprache] [optional Anker #] [eine Zahl von 0-9]
UPDATE, nachdem bereitgestellte Lösung:
1. Ausnahme / zh-CN / somepage sollte / cn / somepage erreichbar sein
2. php Thumbnails jetzt Last nicht mehr wie:
img src = "imgcpu? src = someimage.jpg & w = 25 & h = 25 & c = f & f = bw"
Lösung
RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L]
Sie brauchen nichts für Fragmente zu tun (zB: #7
). Sie sind nicht an den Server gesendet. Sie sind vollständig vom Browser behandelt.
Update: Wenn Sie wirklich wollen behandeln zh-CN als Sonderfall, könnte man so etwas tun:
RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L]
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L]
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]
Andere Tipps
Ich würde vorschlagen, die folgenden -
RewriteEngine on
RewriteRule ^([a-z][a-z])/([a-zA-Z]+) /$2?ln=$1
RewriteRule ^([a-z][a-z])/([a-zA-Z]+#([0-9])+) /$2?ln=$1$3
Die erste Regel kümmert sich um URLs wie / en / somepage. Die Sprache sollte von genau zwei Zeichen lang sein Länge und darf nur von A bis Z Zeichen enthalten.
Die zweite Regel kümmert sich um URLs wie / uk / somepage # 7.