2010-11-29 24 views
7

Soy un programador bastante hábil, pero cuando se trata de RegEx y reescritura, soy un n00b total. Quiero convertir una URL desde¿Cómo convierto una cadena de consulta PHP en una URL basada en barras?

http://www.example.com/lookup.php?id=1 

a

http://www.example.com/lookup/1/item/ 

donde "elemento" se refiere al nombre de un elemento en una base de datos que está siendo estudiada en marcha.

Estoy usando LAMP (Linux, Apache, MySQL, PHP) y no puedo, por mi vida, descubrir cómo convertir las URL para que sean amigables con el SEO.

+1

Parece que temen u them.please agarrar una copia del dominio de las expresiones regulares. –

+0

También recomendaría Regular Expressions Cookbook. – Leo

Respuesta

4

simple ejemplo .htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^lookup/([a-z0-9\-]+)/item/?$ /lookup.php?id=$1 
</IfModule> 

Esto coincidirá con cualquier alfanumérica (también reconocerá guiones) cadena de cualquier longitud que el 'id'. Puede limitar esto a solo numérico cambiando la expresión regular a ([0-9]+).

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^lookup/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ /lookup.php?id=$1&view=$2 
</IfModule> 

Ésta coincidirá /lookup/123/some-text/-/lookup.php?id=123&view=some-text

+1

¡Funcionó como un encanto! ¡Muchas gracias! –

0

¿Desea redirigir desde la antigua URL a la nueva? ¿O está buscando leer en esas URL "amigables" y luego hacer que se comporten como la antigua URL?

Si es el último, intente echar un vistazo a Net_URL_Mapper como una forma de analizar y redirigir esos enlaces con bastante facilidad.

1

¡Eche un vistazo a las URL de reescritura htaccess! :)

Aquí está tu ejemplo:

RewriteRule ^lookup/(\d+)/(.*)$ /lookup.php?id=$1&name=$2 

Al acceder a lookup/123/my-product/, que va a llamar el archivo lookup.php?id=123&name=my-product internamente.

+0

¡Gracias a todos, esto es exactamente lo que necesito! –

+0

Ahora el problema es que otras páginas que siguen el formato no funcionan. Deseo obtener otra página http://www.example.com/category.php?id=1 para que aparezca como http://www.example.com/category/1/name/ –

+0

¿Qué pasa si el sitio web está en la subcarpeta? – Piero

Cuestiones relacionadas