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

URL amigable (¿Donde estoy metiendo la pata?)

Estas en el tema de URL amigable (¿Donde estoy metiendo la pata?) en el foro de Apache en Foros del Web. Hola a tod@s Despues de leer todos los posts que hablan sobre el tema, me he puesto a ver si podía hacerlo ya mismo. Pues ...
  #1 (permalink)  
Antiguo 27/10/2010, 03:44
 
Fecha de Ingreso: noviembre-2003
Ubicación: alicante
Mensajes: 44
Antigüedad: 20 años, 5 meses
Puntos: 2
URL amigable (¿Donde estoy metiendo la pata?)

Hola a tod@s
Despues de leer todos los posts que hablan sobre el tema, me he puesto a ver si podía hacerlo ya mismo. Pues bien, creo que sigo todas la indicaciones, pero no me hace ni caso.

Tengo un .htaccess tal como sigue:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^puertas/(.+)/(.+)/(.+).html$ puertas.php?GrupoSel=$1&SubGrupoSel=$2&NombreGrupo =$3

El .htaccess esta en la raiz del Dominio_de_Trabajo

Tengo una función qye transforma Nombre del grupo de puertas en Nombre-del-grupo-de-puertas, esta función trabaja correctamente.

Las url las paso por GET tal como:

http://localhost/Dominio_de_Trabajo/puertas.php?GrupoSel=1&SubGrupoSel=1&NombreGrupo=N ombre-del-grupo-de-puertas

Teoricamente esto se tendría que mostrar tal como

http://localhost/Dominio_de_Trabajo/puertas/1/1/Nombre-del-grupo-de-puertas.html

¿que es lo que no hago y debería hacer, para que esto funcione?.
¿hay que tener alguna configuración especial con el Apache ?
Aprovecho para preguntar también
¿se pueden poner diferentes RewriteRule en el mismo .htaccess?

Gracias a todos de antemano
  #2 (permalink)  
Antiguo 27/10/2010, 03:52
Avatar de wsoul  
Fecha de Ingreso: octubre-2010
Mensajes: 190
Antigüedad: 13 años, 6 meses
Puntos: 13
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

Código PHP:
Ver original
  1. RewriteRule ^puertas/(.*)/(.*)/(.*).html$ puertas.php?GrupoSel=$1&SubGrupoSel=$2&NombreGrupo=$3


¿hay que tener alguna configuración especial con el Apache ?
en principio no
y si, se pueden poner mas de 1
  #3 (permalink)  
Antiguo 27/10/2010, 04:52
 
Fecha de Ingreso: noviembre-2003
Ubicación: alicante
Mensajes: 44
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

Gracias WSOUL por responder.

¿Ves algún error por el que no funcione el RewriteRule ?

Salu2

  #4 (permalink)  
Antiguo 27/10/2010, 05:39
Avatar de wsoul  
Fecha de Ingreso: octubre-2010
Mensajes: 190
Antigüedad: 13 años, 6 meses
Puntos: 13
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

has probado el code que di ?
  #5 (permalink)  
Antiguo 27/10/2010, 07:32
 
Fecha de Ingreso: noviembre-2003
Ubicación: alicante
Mensajes: 44
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

Si, lo he probado, de hecho, primero lo tenía tal como tú me lohas pasado, pero lo modifiqué despues de ver un code con + en lugar de *.

Salu2
  #6 (permalink)  
Antiguo 27/10/2010, 09:06
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

Por lo poco que pude deducir, tu función solo transforma el nombre del grupo, no el link entero. Ya que el trabajo de transformar el link completo le corresponde a PHP, no a Apache. ¿Podrías mostrarnos tu función PHP?
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 27/10/2010, 09:08
 
Fecha de Ingreso: octubre-2009
Mensajes: 6
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

Prueba así y vez si funciona.
Código PHP:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /
  4. RewriteRule ^puertas/(.*)/(.*)/(.*).html$ Dominio/puertas.php?GrupoSel=$1&SubGrupoSel=$2&NombreGrupo=$3
  #8 (permalink)  
Antiguo 27/10/2010, 09:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde PHP a Apache
  #9 (permalink)  
Antiguo 27/10/2010, 10:28
 
Fecha de Ingreso: noviembre-2003
Ubicación: alicante
Mensajes: 44
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

Hola Spider_boy, la funcion para transformar el nombre del grupo es :

Código PHP:
function url_amigable($url) {

        
// Tranformamos todo a minusculas
        
        
$url strtolower($url);
        
        
//Rememplazamos caracteres especiales latinos
        
        
$find = array('á''é''í''ó''ú''ñ');
        
$repl = array('a''e''i''o''u''n');
        
$url str_replace ($find$repl$url);
        
        
// Añaadimos los guiones
        
        
$find = array(' ''&''\r\n''\n''+');
        
$url str_replace ($find'-'$url);
        
        
// Eliminamos y Reemplazamos demás caracteres especiales
        
        
$find = array('/[^a-z0-9\-<>]/''/[\-]+/''/<[^>]*>/');
        
$repl = array('''-''');
        
$url preg_replace ($find$repl$url);
        return 
$url;


la url. la formo de la siguiente manera:

Código PHP:
<a href="puertas.php<? echo '?GrupoSel='.$Leer_id_grupo[$k].'&amp;NombreGrupo='.url_amigable($Titul_grupos[$k]); ?>" class="menu_sub" title="<? echo _SAGR?>"><? echo $Titul_grupos[$k]; ?></a>
pero a la función solo envio el nombre que quiero transformar, el resto de la url tengo entendido que deberia transformarlo el .htaccess.
¿No es así?

Salu2
  #10 (permalink)  
Antiguo 27/10/2010, 10:33
 
Fecha de Ingreso: noviembre-2003
Ubicación: alicante
Mensajes: 44
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

Hola jimmy_2710

Tampoco funciona, no sé si es un error de conceptos lo que tengo o un error de configuración.

Salu2
  #11 (permalink)  
Antiguo 27/10/2010, 10:34
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

No, Apache se encarga de interpretar, osea, tú le pasas una URL amigable, previamente transformada con PHP, y la leerá como si fuera un URL sin transformar, ese es el trabajo de Apache, interpretar la URL.

Debes escribir una función que transforme una URL a este formato :

Código:
http://localhost/Dominio_de_Trabajo/puertas/1/1/Nombre-del-grupo-de-puertas.html
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #12 (permalink)  
Antiguo 27/10/2010, 10:57
 
Fecha de Ingreso: noviembre-2003
Ubicación: alicante
Mensajes: 44
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: URL amigable (¿Donde estoy metiendo la pata?)

Vale, Spider_boy

Ahi es donde lo matan, ¿como puedo hacer eso?,

Puedo formar la url como yo quiera, pero ese no es el problema, desde mi punto de vista es como hago para que los parametros pasados los pueda volver a leer e interpretar para acceder a la base de datos.

Yo pensaba que de eso se encargaba el
Código PHP:
RewriteRule ^puertas/(.+)/(.+)/(.+).htmlpuertas.php?GrupoSel=$1&SubGrupoSel=$2&NombreGrupo =$
donde solo se mostraba lo que era necesario para la url amigable pero no se tocaba lo demás.

salu2

Etiquetas: url, amigables
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 06:08.