Duda con .htaccess
2 seguidores
Ya he buscado en el foro y en medio internet, pero no consigo la solución.
Ya tengo activado el mod_rewrite en mi servidor. Y lo que quiero es que una página estática (dominio.com/plantilla.php) sea dominio.com/plantilla/
Toda la información que encuentro a través de google es para páginas dinámicas, es decir, que me vale para urls tipo dominio.com/plantilla.php?variable=20, pero para páginas estáticas nanai.
¿Alguien me puede echar una mano?
¡Muchas gracias!
Usuario desconocido
Vale, ya lo he resuelto. El problema es que la página a la que luego hace referencia (página.php) no me cogía bien las variables por los guiones medios. Os explico con este ejemplo.
Si miráis la url de este post es:
73930-duda_con_htaccessBIen, pues yo lo que le pasaba era
73930-duda-con-htaccessy no me lo cogía, me daba un error. Así que lo he hecho como aquí y va perfecto, separando variables con guión medio (-) y separando texto con guión bajo (_).He leído por ahí que es mejor utilizar (-) para separar las keywords en la url de cara a a buscadores, ya que google no interpreta los (_) como espacios, sino que lo lee todo junto. ¿Qué me decís a esto?
Usuario desconocido
Bueno, ya está este tema solucionado. La verdad que da gusto utilizar el htaccess.
Lo de que no cogía las css y los js y los enlaces relativos a la página se soluciona utilizando la etiqueta base en el Head, indicando que todos los links hacen referencia al directorio principal, osea, a tu url.
El problema que tengo ahora, es que no consigo que en una url me "escape" el guión medio. -
Os explico, a ver si alguien me puede echar una mano:
Lo que quiero es que:
http://127.0.0.1/directorio/variable1/variable2-variable3/
realmente lo que cargue sea : pagina.php?variable1=$1&variable2=$2&variable3=$3
Y poniendo entre las variables la barra / me lo coge perfectamente, pero cuando quiero separar las últimas dos variables con un - (como los post de Domestika), no lo consigo.
Tengo esto:
Rewriterule ^(.*)/(.*)-(.*)/$ pagina.php?variable1=$1&variable2=$2&variable3=$3 [L]
¿Alguien puede decirme qué le falla?
Usuario desconocido
BUeeeeno, os haré caso y haré este site con mod-rewrite. Aunque de momento estoy probando en mi servidor local (qué grande el XAMPP), ahora veremos si el hostingo contratado lo soporta.
Muchas gracias. Seguiré dando el coñazo con mis dudas
alejandro_arco
@mambrú: acostúmbrate a usar el mod-rewrite para tus proyectos. Como ha comentado @Kr0n prueba a poner la ruta absoluta a partir de la raíz del sitio, es decir:
Usuario desconocido
BUf, pues va a ser demasiado complicado para una web con 5 páginas solamente.
Casi que no lo voy a utilizar. Aunque queda mejor, no creo que influya mucho para el tema de buscadores, ya que son páginas estáticas.
De todas formas muchísimas gracias por tu ayuda eh?
kr0n
Claro, él no sabe nada de los tejemanejes que tú tienes por debajo. Para él "/plantilla/" es un directorio, sin más, y cuando construye la ruta relativa lo hace a partir de ahí. Prueba a referenciar tus archivos desde la raiz ("/css/estilos.css")
Usuario desconocido
Mmmm, creo que no me he explicado bien.
Si la página dominio.com/plantilla.php tiene un link a su css así: css/estilos.css, y entra a la página como plantilla.php, lo lee bien y se muestra correctamente.
En cambio, si entro a dominio.com/plantilla/ , no coge ni los css, ni nada. Es como si en ese momento el navegador tomara como directorio referencia, el de plantilla/, en vez del de dominio.com/
¿Ahora se me entiende?
¡Muchas gracias por tu tiempo!
kr0n
No entiendo. ¿Quieres que los .css y .js se reescriban tambien?
Las reglas que te he pegado no reescriben nada si el archivo o fichero existe (independientemente de qué archivo sea). Es decir, si tu creas un directorio llamado "/plantilla/" el apache va a ir ahí, en vez de reescribir a plantilla.php
De lo de los .css y .js que comentas, si existen, no deberían ser reescritos por el mod_rewrite. Otra cosa es que los estés referenciando bien (las dos rutas que pones, no son la misma, ojo)
Usuario desconocido
¡Perfecto!
Ahora sí que funciona, lo malo, es que no pilla los js ni las css. En cambio, si en el archivo html le pongo la ../cc/estilos.php, osea, que suba un nivel, sí que funciona. ¿Tengo que ponerlo así en todas las páginas?
Ahora (no lo pilla ):
link href="css/estilos.css" type="text/css" rel="stylesheet" media="all" charset="utf-8" /¿Así :
link href="../css/estilos.css" type="text/css" rel="stylesheet" media="all" charset="utf-8" /?¡¡Y tambien me pasa con las imágenes, como no suba un nivel, nanai!!
¡Muchísimas gracias!
kr0n
A ver si esto te sirve:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]+)/?(.*) $1.php?query=$2 [L,QSA]
Te reescribiría "/plantilla/blabla" a "/plantilla.php?query=blabla", pero te sirve igual para "/plantilla" -> "/plantilla.php"