Regla de reescritura de htaccess para una URL bonita

Necesito convertir una cadena de consulta como esta:

http://localhost/view.php?id=12345

Dentro de esto:

http://localhost/12345

Pero, también planeo tener una cadena al final de la URL para que los motores de búsqueda se beneficien, así:

http://localhost/12345/NameOfTheSkin

Algo así como Wowhead hace sus URL:

http://www.wowhead.com/item=49623/shadowmourne

Observe cómo puede cambiar la cadena "shadowmourne" en cualquier cosa y seguirá apuntando a la identificación del elemento. 49623.

Básicamente, necesito que se ignore la cadena al final.

Se agradece cualquier ayuda, salud. :)

preguntado el 16 de mayo de 11 a las 17:05

1 Respuestas

RewriteRule ^/(\d+)/?.*$ /view.php?id=$1 [L]

Esto reescribirá http://host/1234/some-text y http://host/1234 dentro http://host/view.php?id=1234.

Explicación detallada:

^   -- matches at the start of the string
(   -- start match group
\d+ -- match one or more digits
)   -- end match group
/?  -- match 0 or 1 slash
.*  -- match any character 0 or more times
$   -- matches at the end of the string

Visita regular-expressions.info para obtener una guía completa de expresiones regulares.

contestado el 16 de mayo de 11 a las 22:05

¿Por qué funciona eso? ¿Podría incluir más detalles / explicación? - Joe

@Joe La primera parte de la regla de reescritura ^/(\d+)/?.*$ es una expresión regular que extrae dígitos (\d+) dentro del patrón de cadena de consulta /xxx/?.*. Donde el /? intenta hacer coincidir una barra y .* coincidencias evertiendo hasta el final de la línea $. Esto luego se inserta en la solicitud de view.php como $1 es decir, la parte que coincide con el primer paréntesis (los dígitos). - Capitán Jirafa

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.