Ver Mensaje Individual
  #9 (permalink)  
Antiguo 29/10/2008, 18:20
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Mod rewrite con titulo e ID de articulo. Si cambio el titulo me carga lo m

mod_rewrite lo único que hace es el análisis del URL, extrae y llama al archivo correcto con los parámetros correctos, por eso si ves un ejemplo muy muy básico:
Código:
RewriteEngine on
RewriteRule ^uno.html$ dos.html
Ese script no tiene expresiones regulares ni nada, sin embargo si tu llamas a en tu url: http://pagina/uno.html mod_rewrite va a detectar el URL y va a llamar al archivo correcto que es: dos.html, esto sin redirección, ni nada por el estilo.

Es por eso que si tu creas un expresión regular para extraer (en este caso el id de la cadena del url), tu le puedes decir a mod_rewrite que te pase el parámetro, por ejemplo:
Código:
RewriteEngine on
RewriteRule ^articulo-([0-9]+).html$ miarchivo.php?id=$1
Entonces si llamas a cualquier archivo como http://pagina/articulo-20.html, mod_rewrite va a llamar a miarchivo.php?id=20, ya que va a extraer la cadena del url.

Si tu quieres "desactivar" que no se cambie la cadena, entonces busca por la cadena en lugar de por el ID, vas a tener que crear una expresión regular que te extraiga la cadena, por ejemplo:
Código:
RewriteEngine on
RewriteRule ^articulos/([^/\.]+)/?$ pagina.php?articulo=$1
Luego en PHP solo lees $_GET['articulo'] y haces la búsqueda en la BDD. Eso si ten en cuenta que la búsqueda por texto es más costosa que solo el ID, por lo que si vas a pensar en tener muchos usuarios simultáneos, lo mejor es buscar por el ID que por el texto completo del titulo, lo que hace en este caso un sistema como el foro es eso mismo que dices, extrae al articulo, compara el título y en caso de ser incorrecto te redirige (con un simple header) a la url correcta (esto es para ayudar al posicionamiento SEO).

Saludos.