URL abbellimento usando .htaccess
-
29-09-2019 - |
Domanda
alla ricerca di una più userfriendly URL , come faccio a raggiungere entrambi dei seguenti, con eleganza utilizzando solo .htaccess?
/ de / somepage
andando a /somepage?ln=de
/ ZH-CN / somepage # 7
andando a /somepage?ln=zh-CN#7
sintesi:
/ [lingua] / [pagefilenameWithoutExtension] [opzionale ancoraggio #] [un numero da 0-9]
dovrebbe caricarsi (senza cambiare url)
/ [pagefilenameWithoutExtension]? Ln = [lingua] [opzionale ancoraggio #] [un numero da 0-9]
UPDATE, dopo soluzione fornita:
1. eccezioni / ZH-CN / somepage dovrebbe essere raggiungibile da / cn / QualchePagina
2. php miniature generate ora dont più carico come:
img src = "imgcpu? src = someimage.jpg & w = 25 & h = 25 & c = f & f = bw"
Soluzione
RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L]
Non c'è bisogno di fare qualsiasi cosa per frammenti (ad esempio: #7
). Essi non vengono inviati al server. Sono gestite interamente dal browser.
Aggiornamento: Se davvero vuole trattare zh-CN come un caso speciale, si potrebbe fare qualcosa di simile:
RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L]
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L]
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]
Altri suggerimenti
vorrei suggerire il seguente -
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 prima regola si prende cura di URL come / de / QualchePagina. Il linguaggio deve essere di esattamente due caratteri lunghezza e deve contenere solo caratteri z.
La seconda regola si prende cura di URL come / UK / somepage # 7.