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

añadir la bara "/" al final de una url automáticamente (.htaccess)

Estas en el tema de añadir la bara "/" al final de una url automáticamente (.htaccess) en el foro de Apache en Foros del Web. Hola! Gracias al foro he conseguido aplicar unas url amigables sencillitas a mi web. Pero me he quedado con una pequeña duda, a ver si ...
  #1 (permalink)  
Antiguo 19/08/2009, 11:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 7 meses
Puntos: 0
añadir la bara "/" al final de una url automáticamente (.htaccess)

Hola!

Gracias al foro he conseguido aplicar unas url amigables sencillitas a mi web. Pero me he quedado con una pequeña duda, a ver si alguien pudiera respondermela:

Si el usuario escribe:

dominio.com/seccion/
dominio.com/seccion


Cómo se haría para que siempre aparezca la url de la siguiente manera:

dominio.com/seccion/

Sé que utilizando /? al final de la regla la barra pasa a ser un parámetro opcional, pero de este modo no se añade automáticamente si el usuario no la escribe.

Muchas Gracias!
  #2 (permalink)  
Antiguo 19/08/2009, 11:50
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

Revisa esto:
http://httpd.apache.org/docs/2.0/rew...#trailingslash

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 19/08/2009, 17:05
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

Muchas gracias, de momento no he conseguido hacerlo funcionar pero ya sé por donde continuar la búsqueda.


Por curiosidad, sobre el ejemplo de antes (utilizando /? en el htaccess):

dominio.com/seccion/
dominio.com/seccion


Interpretaría google que se puede acceder a una misma página con dos url distintas, y por tanto penalizar?


Gracias de nuevo!
  #4 (permalink)  
Antiguo 19/08/2009, 18:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

Las implicaciones sobre el posicionamiento en buscadores puedes consultarlas en la sección de SEO.

Si no logras hacerlo funcionar, muestra la regla de reescritura como la tienes y podremos ayudarte.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 20/08/2009, 08:01
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

perfecto, preguntaré en la sección SEO sobre el tema.

Respecto al htaccess, ahora lo tengo así (es un poco más largo, pero voy repitiendo el patrón con otros .php):

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.+)/contacto/$ contacto.php?idioma=$1 [NC,L]
RewriteRule ^(.+)/servicios/$ servicios.php?idioma=$1 [NC,L]
RewriteRule ^(.+)/programas-exclusivos/$ programas.php?idioma=$1 [NC,L]

He intentado añadir reglas sobre el trailing slash (como en el enlace que me pusiste) pero no consigo el propósito. Qué regla añadirías en mi caso?

Mil gracias!
  #6 (permalink)  
Antiguo 20/08/2009, 08:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

Por ejemplo:
Código Apache:
Ver original
  1. RewriteBase /
  2.  
  3. RewriteRule ^(.+)/contacto$  $1/contacto/ [R, L]
  4. # ...
  5.  
  6. RewriteRule ^(.+)/contacto/$ contacto.php?idioma=$1 [NC,L]
  7. #...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 20/08/2009, 08:35
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

Perfecto! ya he aplicado la regla a todos los casos con éxito

Tan sólo hay uno en el que no me funciona: en la index. En el htacces tengo:

RewriteRule ^(.+)/$ index.php?idioma=$1 [NC,L]

De modo que la dirección definitiva sea (en el caso del idioma español):

dominio.com/es/

Siguiendo el patrón anterior, cómo deberia quedar la regla? He intentado algo así pero no termina de funcionar (añade dos //):

RewriteRule ^(.+)$ $1/ [R,L]


Muchas gracias por todo.
  #8 (permalink)  
Antiguo 20/08/2009, 09:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

Prueba así:
Código Apache:
Ver original
  1. RewriteRule ^([^/]+)$ $1/ [R,L]
Sólo recuerda agregar un RewriteCond para que no afecte a archivos (como el index.php)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 20/08/2009, 11:25
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

Me ha funcionado perfecto! Por si le pudiese servir a alguien más, el .htaccess ha quedado así finalmente:

Código .htaccess:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine on
  3. RewriteBase /proyecto01/
  4.  
  5. #solucion al problema del trailing slash
  6. RewriteRule ^(.+)/programas-exclusivos$  $1/programas-exclusivos/ [R,L]
  7. RewriteRule ^(.+)/contacto$  $1/contacto/ [R,L]
  8. RewriteRule ^(.+)/servicios$  $1/servicios/ [R,L]
  9.  
  10. RewriteCond %{REQUEST_FILENAME} !-f
  11. RewriteCond %{REQUEST_FILENAME} !-d
  12. RewriteCond %{REQUEST_URI} !^/index.php
  13. RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
  14. RewriteRule ^([^/]+)$ $1/ [R,L]
  15.  
  16.  
  17. #interpretacion de las url amigables
  18. RewriteRule ^(.+)/programas-exclusivos/$ programas.php?idioma=$1 [NC,L]
  19. RewriteRule ^(.+)/contacto/$ contacto.php?idioma=$1 [NC,L]
  20. RewriteRule ^(.+)/servicios/$ servicios.php?idioma=$1 [NC,L]
  21. RewriteRule ^(.+)/$ index.php?idioma=$1 [NC,L]

Únicamente me ha quedado una cosa en el aire que parece tener relación que ver con el mismo tema. Resulta que si escribo dominio.com/seccion// (y tantas ///// como quiera) no me da ningún tipo de error y entra correctamente a la página.

Se te ocurre alguna regla para corregirlo, ya sea eliminando las /// o mostrando un 404?
  #10 (permalink)  
Antiguo 20/08/2009, 12:15
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

Ese parece ser el comportamiento normal de Apache. De hecho, ocurre lo mismo con los directorios . Tal vez así se quita:
Código:
RewriteCond %{REQUEST_URI} //+$
RewriteRule ^(.*)/$ $1/ [R,L]
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 20/08/2009, 12:21
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

No se ha solucionado con esta última regla. Pero no pasa nada, he estado leyendo y no parece nada grave, de hecho lo preguntaba por curiosidad y por completar un poquito más mi andadura por htaccess

Así pues doy por solucionado el tema. Muchas gracias por todo David, me has ayudado mucho!
  #12 (permalink)  
Antiguo 28/09/2009, 09:07
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: añadir la bara "/" al final de una url automáticamente (.htaccess)

Amplío el post con una nueva duda referente al mismo asunto.

En el caso de usar url estáticas, el tema de las trailing slash se solucionaría añadiendo la siguiente regla en el .htaccess (por ejemplo para el caso de contacto.php):

Código .htaccess:
Ver original
  1. RewriteRule ^(.+)/contacto$  $1/contacto/ [R,L]

Pero en el caso de url dinámicas, que hacen uso de variables para su creación, ¿cómo se podría aplicar dicha regla para solucionar el asunto de las '/' finales (trailing slash)?

Por ejemplo, con la siguiente regla (Que nos dejaría una url similar a esto: dominio.com/noticias/01/solucionando-trailing-slash/):

Código .htaccess:
Ver original
  1. RewriteRule ^noticias/(.+)/(.+)/$  post.php?id=$1&tit=$2  [NC,L]

Muchas gracias.
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:04.