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

[SOLUCIONADO] URL Amigables con guiones

Estas en el tema de URL Amigables con guiones en el foro de Apache en Foros del Web. Buenas Noches estoy haciendo una web para una pagina de series online.. y necesito que la url dominio.com/ver.php?serie=nombre-serie se pueda acceder desde dominio.com/nombre-serie mi .htaccess ...
  #1 (permalink)  
Antiguo 05/12/2014, 23:10
 
Fecha de Ingreso: noviembre-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
URL Amigables con guiones

Buenas Noches estoy haciendo una web para una pagina de series online.. y necesito que la url dominio.com/ver.php?serie=nombre-serie se pueda acceder desde dominio.com/nombre-serie

mi .htaccess esta asi

Código:
# Activar RewriteEngine
RewriteEngine on
 
# Reescribir la URL solicitada por el usuario
#   Entrada:  NOMBRE
#   Salida: ver.php?series=NOMBRE
RewriteRule ^(\w+)/?$ ver.php?serie=$1
en mi menu de series tengo algo asi como

Código HTML:
<li><a href='Dexter'>Dexter</a></li>
<li><a href='Los-Simpsons'>Los Simpsons</a></li> 
con las series de una sola palabra como titulo (como el primer li) funciona perfectamente

el problema esta en las series con mas de una palabra que las separe por un "-"

y me sale el error: The requested URL /sitio/los-simpsons was not found on this server.



Gracias de antemano por la ayuda
  #2 (permalink)  
Antiguo 06/12/2014, 07:39
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: URL Amigables con guiones

El problema está en la expresión regular. La clase "\w" no captura guiones. Sustitúyela por:


Código:
^(\w+(\-\w+)?)/?$

Saludos
  #3 (permalink)  
Antiguo 06/12/2014, 09:37
 
Fecha de Ingreso: noviembre-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: URL Amigables con guiones

perfecto logre solucionarlo, pero ahora me surge el mismo problema con las series con titulo de mas de dos palabras ejemplo the-walking-dead

PD: Acabo de darme cuenta que si por ejemplo intento acceder a un subdirectorio ejemplo admin aplica las reglas de reescritura, y me abre la pagina ver.php con el parametro admin

Última edición por santi_72; 06/12/2014 a las 09:56
  #4 (permalink)  
Antiguo 06/12/2014, 11:04
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: URL Amigables con guiones

Pues es lo mismo más o menos:

Código:
^(\w+(\-\w+)*)/?$
¿Entonces quieres que no se aplique la regla al admin?
  #5 (permalink)  
Antiguo 06/12/2014, 13:46
 
Fecha de Ingreso: noviembre-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: URL Amigables con guiones

muchas gracias de verdad :D me sirvio

sii osea que no se aplique la regla en el caso de que exista un directorio con ese nombre


espero no ser pesado pero no entiendo mucho de estas reglas

otra cosa que necesito es que al ingresar a dominio.com/ver/nombre-de-serie-1-5
ingrese al capitulo 5 de la temporada 1 de la serie indicada

para eso tengo un archivo en la raiz llamado capitulo.php?s=nombre-de-serie&t=numTemporada&c=numCapitulo

intente con las reglas anteriores pero al momento de hacer el $_GET queda todo en el primer parametro
  #6 (permalink)  
Antiguo 06/12/2014, 13:58
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: URL Amigables con guiones

Para evitar sobreescribir archivos existentes utiliza estas condicionales:

Código Apache:
Ver original
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d

Lo siguiente que dices sería crear una regla nueva... ¿Has probado con algo?
  #7 (permalink)  
Antiguo 06/12/2014, 17:20
 
Fecha de Ingreso: noviembre-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: URL Amigables con guiones

gracias por la ayuda, intente eso pero por ejemplo si pongo nombredelsitio.com/admin accede a la carpeta admin pero la url queda de esta forma nombredelsitio.com/admin/?serie=admin

tal vez me haya quedado algo mal, dejo aca mi codigo del .htaccess

Código:
Options -Indexes

# Activar RewriteEngine
RewriteEngine on
 
# Reescribir la URL solicitada por el usuario
#   Entrada:  NOMBRE
#   Salida: ver.php?series=NOMBRE

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\w+)/?$ ver.php?serie=$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\w+(\-\w+)?)/?$ ver.php?serie=$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\w+(\-\w+)*)/?$ ver.php?serie=$1

# Reescribir la URL solicitada por el usuario
#   Entrada:  VER/NOMBRE-NUMTEMP-NUMCAP
#   Salida: capitulo.php?s=NOMBRE&t=NUMTEMP&c=NUMCAP


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ver/([^/]*)-([^/]*)-([^/]*)$ capitulo.php?s=$1&t=$2&c=$3
bueno la otra regla que te habia preguntado ya la pude hacer es la ultima y me funciono perfectamente, el unico detalle es que tuve que modificar mis url de imagenes y de estilos porque las buscaba dentro de la carpeta /ver/

te agradezco mucho la ayuda :D
  #8 (permalink)  
Antiguo 07/12/2014, 08:50
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: URL Amigables con guiones

Pues no debería ocurrir eso, si es que el directorio /admin/ existe como tal. Aun así podrías hacerlo de forma manual:

Código Apache:
Ver original
  1. RewriteCond %{REQUEST_FILENAME} !^/admin

Última edición por PHPeros; 07/12/2014 a las 11:16
  #9 (permalink)  
Antiguo 07/12/2014, 18:17
 
Fecha de Ingreso: noviembre-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Respuesta: URL Amigables con guiones

sii perdon ya no sucede eso, seguro fue el cache del navegador o algo de eso.. muchas gracias por la ayuda, tema solucionado :D

Etiquetas: amigables, htaccess, html, javascript, url
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 07:55.