URL Embellissement en utilisant .htaccess
-
29-09-2019 - |
Question
à la recherche d'un plus URL userfriendly , comment puis-je obtenir les deux éléments suivants, en utilisant uniquement avec élégance .htaccess?
/ de / somepage
va /somepage?ln=de
/ zh-CN / somepage # 7
va /somepage?ln=zh-CN#7
Résumé:
/ [langue] / [pagefilenameWithoutExtension] [# option d'ancrage] [un numéro de 0-9]
devrait charger (sans changer url)
/ [pagefilenameWithoutExtension]? Ln = [langue] [# option d'ancrage] [un numéro de 0-9]
UPDATE, après solution à condition que:
1. exception / zh-CN / somepage doit être accessible en / cn / somepage
2. php vignettes générées DonT maintenant comme charge plus:
img src = "imgcpu? src = someimage.jpg & w = 25 et h = 25 et c = f & f = bw"
La solution
RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L]
Vous ne devez rien faire pour des fragments (par exemple: #7
). Ils ne sont pas envoyés au serveur. Ils sont entièrement prises en charge par le navigateur.
Mise à jour: Si vous vraiment voulez traiter zh-CN comme un cas particulier, vous pouvez faire quelque chose comme:
RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L]
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L]
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]
Autres conseils
Je suggère ce qui suit -
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
La première règle prend en charge les URL comme / de / somepage. La langue doit être exactement deux caractères longueur et doit contenir seulement des caractères z.
La deuxième règle prend en charge les URL comme / uk / somepage # 7.