Foros del Web » Administración de Sistemas » Apache »

Se puede hacer esto --> RewriteRule

Estas en el tema de Se puede hacer esto --> RewriteRule en el foro de Apache en Foros del Web. Se puede lograr hacer esto : http://localhost/web/vista/anuncio-3184514.html Yo hice esto, pero no funciono :( @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código htaccess: Ver original RewriteRule anuncio-(.*)(.*)(.*)(.*)(.*)\.html$ ingresoPublicacion.php?Id=$1&Ciudad=$2&Comuna=$3&Categoria=$4&Subcategoria=$5 [L] Se ...
  #1 (permalink)  
Antiguo 03/03/2011, 23:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 147
Antigüedad: 14 años, 2 meses
Puntos: 3
Se puede hacer esto --> RewriteRule

Se puede lograr hacer esto :

http://localhost/web/vista/anuncio-3184514.html

Yo hice esto, pero no funciono :(

Código htaccess:
Ver original
  1. RewriteRule anuncio-(.*)(.*)(.*)(.*)(.*)\.html$ ingresoPublicacion.php?Id=$1&Ciudad=$2&Comuna=$3&Categoria=$4&Subcategoria=$5 [L]

Se puede lograr?


Hay una página que tiene un ejemplo:

http://rastro.com/aviso_3227771-montero-99-caja-mala-conversable.html

Saludos y gracias

Última edición por ZeThito; 03/03/2011 a las 23:58
  #2 (permalink)  
Antiguo 04/03/2011, 08:20
 
Fecha de Ingreso: diciembre-2010
Mensajes: 79
Antigüedad: 14 años
Puntos: 3
Respuesta: Se puede hacer esto --> RewriteRule

Que es lo que realmente quieres hacer??, crear una página donde aparezca digitos y guiones... O quieres crear una página dinamicamente??

Explica un poco mejor
  #3 (permalink)  
Antiguo 06/03/2011, 17:38
 
Fecha de Ingreso: septiembre-2010
Mensajes: 147
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Se puede hacer esto --> RewriteRule

Hola !! Quiero editar el archivo .htaccess con las reglas para que mi URL se vea más amigable.

Actualmente tengo esto en mi .htaccess

Cita:
# limita la carga de archivos a 2mb
LimitRequestBody 2024000

# desactiva la navegacion de directorios
Options -Indexes

IndexOptions FancyIndexing

IndexIgnore *

Options +FollowSymLinks
RewriteEngine on

RewriteRule anuncio_(.*)-(.*)-(.*)-(.*)-(.*)_(.*).html$ mostrar.php?Id=$1&Ciudad=$2&Comuna=$3&Categoria=$4 &Subcategoria=$5&titulo=$6 [L]
RewriteRule publicar.html$ publicar.php [L]
RewriteRule codigo.html$ codigo.php [L]
RewriteRule dashboard.html$ eliminar.php [L]
RewriteRule index.html$ index.php [L]
y mi URL se ve de esta forma :

Cita:
http://localhost/anuncio_1-14-45-2-55_dell-xps-1530-en-buen-estado.html
Pero yo quiero que se vea más amigable aún, algo como esto :

Cita:
http://localhost/anuncio-11445255-dell-xps-1530-en-buen-estado.html

Se puede hacer esto?

Saludos =)
  #4 (permalink)  
Antiguo 09/03/2011, 21:53
 
Fecha de Ingreso: diciembre-2009
Ubicación: dirname(__FILE__)
Mensajes: 149
Antigüedad: 15 años
Puntos: 11
Respuesta: Se puede hacer esto --> RewriteRule

Nop, no se puede :p

Apache no tiene cómo saber que 11445255 se debe particionar en 1-14-45-2-55, qué hacer para que no se particione en 11-4-4-52-55, 1-1-44-52-5-5, o cualquier otra combinación?

Podrías hacer algo como ésto, aunque demandará saber modelar bases de datos, por ejemplo, que si el usuario ingresa a:

http://dominio.tld/anuncio/dell-xps-1530-en-buen-estado

Apache llame al archivo mostrar.php?b=dell-xps-1530-en-buen-estado, esto se puede hacer con:

Código Apache:
Ver original
  1. RewriteEngine on
  2. RewriteRule ^anuncio/(.+)$ mostrar.php?b=$1

luego en mostrar.php:

Código PHP:
Ver original
  1. // Recoger el titulo del anuncio.
  2. $titulo = $_SERVER['QUERY_STRING'];
  3.  
  4. // Conectar con la BD (uso PDO por seguridad, podría ser también mysqli):
  5. try {
  6.     $bd = new PDO('mysql:dbname=nombreBD', 'root', 'macoy123');
  7. } catch (PDOException $e) {
  8.     echo 'Error de conexión: ' . $e->getMessage();
  9. }
  10.  
  11. // Buscar con consulta preparada para evitar un ataque de inyección SQL
  12. $respuesta = $bd->prepare(
  13. 'SELECT id, ciudad, comuna, categoria, subcategoria
  14. FROM anuncios
  15. WHERE titulo = ?
  16. LIMIT 1'
  17. );
  18.  
  19. // Ejecutar la consulta con el título recogido desde la uri.
  20. $respuesta->execute(array($titulo));
  21.  
  22. // Transformar la respuesta a una matriz para trabajar con ella
  23. $datosAnuncio = $respuesta->fetch(PDO::FETCH_ASSOC);
  24.  
  25. // Imprimir algun resultado al usuario con los datos obtenidos desde la base de datos,
  26. // no desde la url.
  27. ?>
  28.  
  29. <!DOCTYPE html>
  30. <html>
  31. <head>
  32. <title>Anuncio</title>
  33. </head>
  34. <body>
  35. <h1>Anuncio <?php echo htmlentities($datosAnuncio['id']) ?></h1>
  36. <ul>
  37. <?php
  38. foreach($datosAnuncio as $dato) {
  39. echo '<li>', htmlentities($dato), '</li>';
  40. }
  41. ?>
  42. </ul>
  43. </body>

Es decir, quizá te ayude replantear tu aplicación, en vez de que la información de la ciudad, categoría, comuna, etc venga desde la uri, podría venir incluida dentro del título.

Luego necesitarías tener una tabla con llave UNIQUE para el título y una columna para la ciudad etc.

Es lo único que se me ocurre para que sea más amigable, y de hecho es la forma en como trabajan varios script.

Si por otro lado para tu aplicación es muy importante pasar esos datos por la uri, tendrías que separarlos por algún delimitador, por ejemplo, tal como lo estabas haciendo.

Saludos :)
__________________
Estreno blog ~ DesarrolladorWeb.cl :)

Etiquetas: rewriterule
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:22.