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

¿Pueden funcionar algunas expresiones .htaccess y otras no?

Estas en el tema de ¿Pueden funcionar algunas expresiones .htaccess y otras no? en el foro de Apache en Foros del Web. Saludos. La cuestión es que estoy personalizando mi archivo .htaccess con el objetivo principal de hacer mis url amigables. He probado algunas funciones, por ejemplo, ...
  #1 (permalink)  
Antiguo 14/12/2012, 07:26
liranan
Invitado
 
Mensajes: n/a
Puntos:
¿Pueden funcionar algunas expresiones .htaccess y otras no?

Saludos.

La cuestión es que estoy personalizando mi archivo .htaccess con el objetivo principal de hacer mis url amigables.

He probado algunas funciones, por ejemplo, una que hace que se añada "www" al principio de la url aunque el usuario no lo especifique; u otra que añade ".php" al final en caso de que exista dicho archivo.

Por lo tanto sé que mi servidor tiene mod_rewrite activado y funcionando.

Sin embargo, al intentar introducir una expresión que cambie mis url, no sucede nada.
He probado miles de ejemplos de diferentes páginas, tutoriales, etc. Incluídos por supuesto muchos de este mismo foro.

Lo que busco es sencillo; una vez que lo tenga ya podré preocuparme de hacerlo más sofisticado.
Quiero cambiar de esto "www.miweb.com/perfil.php?usuario=Gonzalo"
a algo como "www.miweb.com/usuario/Gonzalo
o "www.miweb.com/perfil/usuario/Gonzalo

me da un poco igual, de momento me conformo con que cambie algo :)

Al final, solo me quedan dos conclusiones posibles:
- Algo hago mal (lo más probable pues acabo de empezar en este tema)
- Mi servidor (cPanel) tiene algunas funciones capadas (dudoso... pero ¿posible?)

Para mejor ilustración de mi problema, adjunto mi código .htaccess:

Código .htaccess:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. AddDefaultCharset utf-8
  4. AddCharset utf-8 .html .php
  5.  
  6. #añade www al principio de la dirección aunque el usuario no lo haga
  7. RewriteCond %{HTTP_HOST} ^gamebaloo\.com
  8. RewriteRule (.*) http://www.gamebaloo.com/$1 [R=301,L]
  9.  
  10. #al colocar una palabra en la url, enlaza al contenido .php si existe (ejemplo, al poner "gamebaloo.com/contacto" redirige a "gamebaloo.com/contacto.php")
  11. RewriteCond %{REQUEST_FILENAME} !-f
  12. RewriteCond %{REQUEST_FILENAME} !-d
  13. RewriteCond %{REQUEST_FILENAME}.php -f
  14. RewriteRule ^(.+)$ $1.php [L,QSA]
  15.  
  16. #un ejemplo que no funciona
  17. RewriteBase /
  18. RewriteRule ^(.*)/(.*)\.html perfil.php?$1=$2 [L]
  19.  
  20. #otro ejemplo que no funciona
  21. RewriteBase /
  22. Rewriterule ^usuario/(.+) perfil.php?usuario=$1
  23.  
  24. #etc
  #2 (permalink)  
Antiguo 15/12/2012, 15:04
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: ¿Pueden funcionar algunas expresiones .htaccess y otras no?

Te diría que como primer medida pruebes esto solo

Código Apache:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteRule ^usuario/(.*)$ /perfil.php?usuario=$1 [L]

Luego tu segunda regla no tiene mayor sentido, si contacto.php existe y querés camuflar la extensión hacés esto

Código Apache:
Ver original
  1. RewriteCond %{SCRIPT_FILENAME} !-d  
  2. RewriteCond %{SCRIPT_FILENAME} !-f
  3. RewriteRule ^contacto$ /contacto.php [NC,L]

Siempre andá probando una regla a la vez y verificando el funcionamiento, recien entonces agregás otra

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 15/12/2012, 15:38
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 3 meses
Puntos: 2114
Respuesta: ¿Pueden funcionar algunas expresiones .htaccess y otras no?

Siempre que leo algo por aquí del Rewrite veo poco que se haga uso de la barra al final de la regla. Yo es algo que siempre pongo, ya casi de forma automática.

Según el ejemplo:
Código Apache:
Ver original
  1. RewriteRule ^contacto/?$ /contacto.php [NC,L]
El ? para que funcione con o sin esa barra al final.

Ahora, no sé si es que hay otra forma automática de hacerlo por omisión y a mi me gusta tontear o la gente directamente no lo tiene en cuenta.

No tiene que ver con la pregunta, pero es algo que veo hacer poco y me daba curiosidad.
  #4 (permalink)  
Antiguo 15/12/2012, 16:10
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: ¿Pueden funcionar algunas expresiones .htaccess y otras no?

Cita:
Iniciado por Bonez Ver Mensaje
Siempre que leo algo por aquí del Rewrite veo poco que se haga uso de la barra al final de la regla. Yo es algo que siempre pongo, ya casi de forma automática.

Según el ejemplo:
Código Apache:
Ver original
  1. RewriteRule ^contacto/?$ /contacto.php [NC,L]
El ? para que funcione con o sin esa barra al final.

Ahora, no sé si es que hay otra forma automática de hacerlo por omisión y a mi me gusta tontear o la gente directamente no lo tiene en cuenta.

No tiene que ver con la pregunta, pero es algo que veo hacer poco y me daba curiosidad.
@bonez, según creo lo más apropiado es esto
http://www.forosdelweb.com/f58/quita...6/#post4205380

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 17/12/2012, 01:56
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Pueden funcionar algunas expresiones .htaccess y otras no?

Muchas gracias por sus respuestas.

Sin embargo, me han servido para probar que algo me falla, pues aun escribiendo tu expresión tal cual, emprer, sigo sin apreciar ningún cambio en mis URLs...

A alguien se le ocurre dónde puede estar el fallo?
  #6 (permalink)  
Antiguo 19/12/2012, 15:43
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 14 años
Puntos: 48
Respuesta: ¿Pueden funcionar algunas expresiones .htaccess y otras no?

La primera sería así:
Código Apache:
Ver original
  1. RewriteRule ^/([^/]+)/([^/]+)\.html /perfil.php?$1=$2 [R=301,NC,QSA,L]
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España
  #7 (permalink)  
Antiguo 08/01/2013, 14:36
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: ¿Pueden funcionar algunas expresiones .htaccess y otras no?

Cita:
Iniciado por liranan Ver Mensaje
Muchas gracias por sus respuestas.

Sin embargo, me han servido para probar que algo me falla, pues aun escribiendo tu expresión tal cual, emprer, sigo sin apreciar ningún cambio en mis URLs...

A alguien se le ocurre dónde puede estar el fallo?
Buenas liranan, hace casi un mes que vengo lidiando y tratando de poder generar en mi web los enlaces amigables. te paso mi caso y quizás te ayude en algo.

este es el código que tengo en el htaccess

# Activar RewriteEngine
RewriteEngine On

Código:
# Reescribir la URL solicitada por el usuario
#   Entrada:  ciudades/NOMBRE/
#   Salida: ciudades.php?id=NOMBRE
RewriteRule ^ciudades/(\w+)/?$ ciudades.php?varP=$1
lo que logro es que entrando en la barra de direcciones www.miweb.es/ciudades/19 >>>> me lleve a www.miweb.es/ciudades.php?id=19 , sin mostrarme esto ultimo claro.

Problemas:
+ que navegando desde la web cuando enlazo desde un enlace interno a www.miweb.es/ciudades.php?id=19 no me muestra el Rewrite en la barra de direcciones,
+ que la regla me desarmo todos los enlaces internos en la web www.miweb.es/ciudades.php?id=19, ya que supone que me genera un directorio nuevo /ciudad/ que no existe y cuando enlazo desde esa web a otro link pretende salir de ese directorio ficticio.

en tu caso yo agregaría este codigo

Código:
Rewriterule ^perfil/(\w+)/?$  perfil.php?usuario=$1
y estarías en la misma situación que yo.
accederias a www.miweb.com/perfil/Gonzalo


espero no haberte complicado
  #8 (permalink)  
Antiguo 08/01/2013, 15:09
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 14 años
Puntos: 48
Respuesta: ¿Pueden funcionar algunas expresiones .htaccess y otras no?

manu_mdq04, pon esto:
Código Apache:
Ver original
  1. RewriteRule ^ciudades/(\w+)/?$ /ciudades.php?id=$1 [R=301,QSA]
¿Si le estás poniendo el parámetro "varP", cómo quieres que te ponga el parámetro "id"?.
En el VirtualHost lo pongo así (me gusta más el VH que el .htaccess):
Código Apache:
Ver original
  1. RewriteRule ^/ciudades/(\w+)/?$ /ciudades.php?id=$1 [R=301,QSA]

No te olvides de poner el "/" al principio de la url a la que tiene que redireccionar.
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España
  #9 (permalink)  
Antiguo 09/01/2013, 11:48
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: ¿Pueden funcionar algunas expresiones .htaccess y otras no?

Cita:
Iniciado por Trublux Ver Mensaje
manu_mdq04, pon esto:
Código Apache:
Ver original
  1. RewriteRule ^ciudades/(\w+)/?$ /ciudades.php?id=$1 [R=301,QSA]
¿Si le estás poniendo el parámetro "varP", cómo quieres que te ponga el parámetro "id"?.
En el VirtualHost lo pongo así (me gusta más el VH que el .htaccess):
Código Apache:
Ver original
  1. RewriteRule ^/ciudades/(\w+)/?$ /ciudades.php?id=$1 [R=301,QSA]

No te olvides de poner el "/" al principio de la url a la que tiene que redireccionar.
Si lo del ID era un error en el tipeo. He puesto la linea como dices y no pasa nada. me da error 404.

Lo dejo como esta hasta que me pueda poner a leer algun manual de htacces.

Saludos.

Etiquetas: .htaccess, amigables, expresiones, mod_rewrite, regulares
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 11:05.