Autor Tema: url's amigables  (Leído 4547 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
url's amigables
« : octubre 31, 2010, 02:07:17 pm »
Hola expertos del PHP, he buscado sobre esto de las url´s amigables con el fin de implementarlo en mi sitio web, he leido sobre Modrewrite de Apache y he mirado ejemplos muy simples.

Lo que quiero es pasar esta url a url amigable

Código: [Seleccionar]
http://www.jjsystem.net.co/php/infoproductos.php?codiprod=1
Con el primer ejemplo que me ayudeis, yo me encargare de los demas.

Gracias.

Desconectado ChronicMan

  • Sv Member
  • ***
  • Mensajes: 108
Re: url's amigables
« Respuesta #1 : octubre 31, 2010, 02:52:03 pm »
Bueno esto es fundamental en el seo, te dejo un ejemplito de como va tu te lo vas viendo

Creamos dos archivos uno se llama index.php y el otro clientes.php

index.php tendrá únicamente un enlace a clientes.php, para simplificarlo todo un poco.

Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejemplo de URL amigable</title>
</head>
<body>
  <h1>Ahora estás en index.php</h1>
  <a href="clientes/juan">Juan</a>
</body>
</html>

como podes ver el enlace ya es una url amigable Sin embargo al hacer click sobre el enlace necesitamos interpretar esa URL que llega al servidor para que este sepa qué hacer. Creamos un archivo de texto, lo grabamos como .htaccess y escribimos en él:

Código: [Seleccionar]
# Activar RewriteEngine
RewriteEngine on
 
# Reescribir la URL solicitada por el usuario
#   Entrada:  clientes/NOMBRE/
#   Salida: clientes.php?id=NOMBRE
RewriteRule ^clientes/(\w+)/?$ clientes.php?id=$1

Aqui tenemos la expresión que sustituirá a la primera parte, ahora creamos clientes.php

Código: [Seleccionar]
<?php
// Obtenemos el nombre del usuario desde la URL
$id $_GET['id'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejemplo de URL amigable</title>
</head>
<body>
  <h1>Ahora estás en clientes.php</h1>
  <p>Nombre del cliente: <?php echo $id?></p>
</body>
</html>

este es un ejemplo que conservo de cuando no ocupo wordpress que conste lo pongo como un ejemplo imparcial para que de una le sirva a los demas interesados en tu caso tu mira esto y adaptalo a tu sitio segun tus propios conocimientos

Saludos espero te sirva.
« Última Modificación: octubre 31, 2010, 02:54:08 pm por ChronicMan »

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: url's amigables
« Respuesta #2 : octubre 31, 2010, 02:59:49 pm »
Ok, muchas gracias, este ya es un ejemplo mucho mas claro, lo adaptare a mis necesidades y probara aún tengo una duda tu pones:

Código: [Seleccionar]
<a href="clientes/juan">Juan</a>

Pero cuando no es juan como hago que pondria ahi, perdon la ignorancia pero esto de url's amigables me ha dado bastante palo.

Desconectado ChronicMan

  • Sv Member
  • ***
  • Mensajes: 108
Re: url's amigables
« Respuesta #3 : octubre 31, 2010, 03:30:17 pm »
Ok, muchas gracias, este ya es un ejemplo mucho mas claro, lo adaptare a mis necesidades y probara aún tengo una duda tu pones:

Código: [Seleccionar]
<a href="clientes/juan">Juan</a>

Pero cuando no es juan como hago que pondria ahi, perdon la ignorancia pero esto de url's amigables me ha dado bastante palo.

No te preocupes a todos nos pasa y con el ejemplo hay se expecifica la direccion entonces <a href="clientes/juan">Juan</a> para que en el sitio aparesca Juan le das click y te manda a tusitio.com/clientes/juan en tu caso imagino que tu codigo es distinto al ejemplo pero las  bases son las mismas

Saludos
« Última Modificación: octubre 31, 2010, 03:47:55 pm por ChronicMan »

Desconectado ChronicMan

  • Sv Member
  • ***
  • Mensajes: 108
Re: url's amigables
« Respuesta #4 : octubre 31, 2010, 03:35:48 pm »
Tambien se me olvido decirte que si no tienes en apache el mod rewrite activado lo activas agregando o descomentando en httpd.conf:

Código: [Seleccionar]
LoadModule rewrite_module modules/mod_rewrite.so
pero con esto no es suficiente para que te lea el .htaccess entonces agregamos al httpd.conf

Código: [Seleccionar]
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
Satisfy all
</Directory>

Saludos

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: url's amigables
« Respuesta #5 : octubre 31, 2010, 03:39:45 pm »
Gracias, mod rewrite esta activado en apache, no se que pondria en mi caso teniendo esta url:

Código: [Seleccionar]
http://www.jjsystem.net.co/php/infoproductos.php?codiprod=1

Por que cambiaria ?codiprod=1

Gracias.

Desconectado ChronicMan

  • Sv Member
  • ***
  • Mensajes: 108
Re: url's amigables
« Respuesta #6 : octubre 31, 2010, 04:02:54 pm »
Lo otro es la direccion en el codigo php pero si cambias los parametos en linea del htaccess queda algo asi

Código: [Seleccionar]
RewriteRule ^php/(\w+)/?$ infoproductos.php?codiprod=$1
Y lamento no contestarte mejor pero yo solo lo manejo con wordpress y solo unas cuantas veces asi sin una plataforma  :roll:

Saludos
« Última Modificación: noviembre 01, 2010, 02:54:01 am por ChronicMan »

Desconectado vmaya

  • Sv Member
  • ***
  • Mensajes: 379
Re: url's amigables
« Respuesta #7 : octubre 31, 2010, 07:50:06 pm »
Pero tienes que asegurarte que tu hosting soporta las url amigables
No hay que ser gran literario para escribir poesía, basta con ser un sentimental empedernido y siempre tener a la mano papel y lápiz.

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: url's amigables
« Respuesta #8 : octubre 31, 2010, 09:45:36 pm »
Ok, lo he probado y al parecer empezo a funcionar, de esta manera configura el .htaccess

Código: [Seleccionar]
RewriteEngine on
RewriteRule ^php/infoproductos/(\w+)/?$ php/infoproductos.php?codiprod=$1

lo configure como lo posteaste pero no funciono dice Objeto no encontrado.

El link lo tengo asi:

Código: [Seleccionar]
<a href="infoproductos/<?php echo $resuprod[0?>">Informacion</a>

La cuestion es que como tengo el .htaccess funciona, en infoproductos.php me muestra la informacion, la cuestion es que no cargan las hojas de estilo ni las imagenes.

¿Sabes que pasa?

Gracias.

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: url's amigables
« Respuesta #9 : noviembre 01, 2010, 08:57:30 am »
Bueno lo he solucionado, el hipervinculo lo tengo de esta manera:


<a href="<?php echo $resuprod[2] ?>">Informacion</a


Y asi el .htaccess

Código: [Seleccionar]
RewriteEngine on
RewriteRule ^php/(\w+)/?$ php/infoproductos.php?nombprod=$1

Y de esta manera que la url


http
://localhost/jjsystem/php/syseduca


Tal como la queria gracias, por su ayuda.

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: url's amigables
« Respuesta #10 : noviembre 01, 2010, 09:36:12 am »
Bueno, ahora me surge la duda de como lo haria si necesitase pasar dos variables, como separaria esas variables en el hipervinculo con un "/" y en el el .htaccess solo agregaria el nombre de la variable con un &variabledos.

Gracias.

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: url's amigables
« Respuesta #11 : noviembre 02, 2010, 12:17:53 am »
Bueno pues, todo iva bien con las url´s amigables hasta que llego la hora de realizar otro script php que necestiaba, resulta que dentro de la carpeta php tengo 4 archivos:

  • productos.php
  • infoproductos.php
  • servicios.php
  • infoservicios.php

el hipervinculo en los archivos productos.php y servicios.php lo hago de esta manera:

<a href="<?php echo $resuserv[2] ?>" title="<?php echo $resuserv[1] ?>">Informacion</a>


Cuando lo hacia con solo los archivos productos.php e infoproductos.php las url´s amigables funcionaban correctamente, pero ahora que he agregado los ultimos dos archivos no funciona.

El .htaccess esta asi:
Código: [Seleccionar]
RewriteEngine on
RewriteRule ^php/(\w+)/?$ php/infoservicios.php?nombserv=$1
RewriteRule ^php/(\w+)/?$ php/infoproductos.php?nombprod=$1

Pero de esta manera solo funcionan las url´s amigables con servicios.php e infoservicios.php, pero si lo pongo de esta manera:
Código: [Seleccionar]
RewriteEngine on
RewriteRule ^php/(\w+)/?$ php/infoservicios.php?nombserv=$1
RewriteRule ^php/(\w+)/?$ php/infoproductos.php?nombprod=$1
Solo funciona con productos.php e infoproductos.php.

¿Como soluciono esto? Gracias.

Desconectado ChronicMan

  • Sv Member
  • ***
  • Mensajes: 108
Re: url's amigables
« Respuesta #12 : noviembre 03, 2010, 08:15:10 am »
Agrega otras lineas mas al .htaccess no solo las modifiques deja las que ya tenias de los otros y agrega las nuevas sin tocas las otras.

Saludos

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re: url's amigables
« Respuesta #13 : noviembre 03, 2010, 09:07:48 am »
Creo que esta solucion esta bien no?...

Código: [Seleccionar]
RewriteEngine On
RewriteRule ^php/([a-z]+)?$ php/infoproductos.php?nombprod=$1
RewriteRule ^php/([a-z_-]+)?$ php/infoservicios.php?nombserv=$1

Agregar otras expresiones regulares.