URL del embellecimiento usando .htaccess
-
29-09-2019 - |
Pregunta
en busca de una mayor fácil de usar URL ¿Cómo logro tanto de los siguientes, elegantemente usando sólo .htaccess?
/ de / CiertaPágina
ir a /somepage?ln=de
/ zh-CN / CiertaPágina # 7
ir a /somepage?ln=zh-CN#7
Resumen:
/ [idioma] / [pagefilenameWithoutExtension] [opcional de anclaje #] [un número del 0-9]
se debe cargar (sin cambiar url)
/ [pagefilenameWithoutExtension]? Ln = [idioma] [opcional de anclaje #] [un número del 0-9]
UPDATE, después solución proporcionada:
1. excepción / zh-CN / CiertaPágina debe ser alcanzable como / cn / CiertaPágina
2. php miniaturas generadas ahora no le carga más como:
img src = "imgcpu? src = someimage.jpg & w = 25 & h = 25 & c = f & f = bw"
Solución
RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L]
Usted no necesita hacer nada por fragmentos (por ejemplo: #7
). Ellos no se envían al servidor. Están manejados en su totalidad por el navegador.
Actualización: Si realmente quiere tratar zh-CN como un caso especial, se podría hacer algo como:
RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L]
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L]
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]
Otros consejos
Yo sugeriría lo siguiente -
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 primera regla se encarga de URLs como / de / CiertaPágina. El lenguaje debe ser de exactamente dos caracteres longitud y debe contener sólo un a caracteres z.
La segunda regla se encarga de URLs como / uk / CiertaPágina # 7.