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

Rewriterule me repite acumula las reescrituras

Estas en el tema de Rewriterule me repite acumula las reescrituras en el foro de Apache en Foros del Web. Tengo un sitio simple sin consultas a base (por ahora) por lo que no necesito demasiados parámetros (más allá que dirigirse a determinado punto de ...
  #1 (permalink)  
Antiguo 10/03/2010, 09:04
Avatar de cemansilla  
Fecha de Ingreso: septiembre-2007
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 214
Antigüedad: 17 años, 2 meses
Puntos: 6
Rewriterule me repite acumula las reescrituras

Tengo un sitio simple sin consultas a base (por ahora) por lo que no necesito demasiados parámetros (más allá que dirigirse a determinado punto de ancla en alguna URL).

La estructura es algo asi:
  • index.php
  • acerca.php
  • portfolio.php
  • contacto.php

Y al .htaccess lo tengo así actualmente (intenté hacerlo con expresiones regulares pero me generaba otro error):

Código:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^index/$ index.php
RewriteRule ^acerca/$ acerca.php
RewriteRule ^portfolio/$ portfolio.php
RewriteRule ^contacto/$ contacto.php
Aclaro que así el sitio me funciona perfectamente pero la URL queda mal, por ejemplo:
  1. Comienzo en http://localhost/misitio/
  2. Hago clic en acerca.php
  3. En la barra de direcciones se ve http://localhost/misitio/acerca/
  4. Hago clic en portfolio.php
  5. En la barra de direcciones se ve http://localhost/misitio/acerca/portfolio/
  6. Y asi sucesivamente.

Quisiera saber que poner en mi .htaccess para que esto funcione correctamente.

Por si sirve de algo a mis links en el HTML los pongo así:

Código HTML:
<a href="acerca/">link acerca</a> 
Espero se haya entendido y me puedan ayudar, desde ya muchas gracias...
__________________
CÉSAR MANSILLA
Web & Mobile Developer - Analista - Creativo - Curioso
http://cesarmansilla.com/
http://cesarmansilla.com/blog/
  #2 (permalink)  
Antiguo 10/03/2010, 09:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Rewriterule me repite acumula las reescrituras

Podrías usar el tag base:
Código HTML:
Ver original
  1. <base href="/" />
O también usar una dirección absoluta:
Código HTML:
Ver original
  1. <a href="/acerca/">Acerca de</a>
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 10/03/2010, 11:32
Avatar de cemansilla  
Fecha de Ingreso: septiembre-2007
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 214
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: Rewriterule me repite acumula las reescrituras

Cita:
Iniciado por David Ver Mensaje
Podrías usar el tag base:
Código HTML:
Ver original
  1. <base href="/" />
O también usar una dirección absoluta:
Código HTML:
Ver original
  1. <a href="/acerca/">Acerca de</a>
Si, probé con esas 2 combinaciones en el HTML pero siempre hace lo mismo.

Gracias igual!
__________________
CÉSAR MANSILLA
Web & Mobile Developer - Analista - Creativo - Curioso
http://cesarmansilla.com/
http://cesarmansilla.com/blog/
  #4 (permalink)  
Antiguo 11/03/2010, 18:09
Avatar de cemansilla  
Fecha de Ingreso: septiembre-2007
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 214
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: Rewriterule me repite acumula las reescrituras

En cierta parte lo solucione con el dato que me dio David poniendo el tab <base /> en el <head />.

Por el momento estoy trabajando en forma local y si ponia:

Código HTML:
<base href="/" /> 
Me convertia las URL a http://localhost/[link], es decir me tomaba como base a la carpeta "www". Por eso decidi cambiar el valor poniendo en el tag base la carpeta donde esta mi proyecto, de la siguiente manera:

Código HTML:
<base href="/mlm/" /> 
Ahi comenzó a funcionar pero se me ocurrio probar en Firefox e IE (estoy desarrollando en Chrome) y me tope con el problema de que cada navegador toma las URL de forma diferente, por ejemplo para el link "acerca/" estando parado en el index ("inicio/"):

Chrome: http://localhost/mlm/acerca/
FF: http://localhost/mlm/inicio/acerca/
IE: http:///mlm/acerca/

O sea, en Chrome funciona bien, en FF me sigue acumulando los links y en IE me obvia el localhost, ¿que estoy haciendo mal?

Mi .htaccess esta asi:

Código:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^inicio/$ index.php
RewriteRule ^nosotros/$ nosotros.php
RewriteRule ^portfolio/$ portfolio.php
RewriteRule ^contacto/$ contacto.php
RewriteRule ^registrarse/$ registrarse.php
__________________
CÉSAR MANSILLA
Web & Mobile Developer - Analista - Creativo - Curioso
http://cesarmansilla.com/
http://cesarmansilla.com/blog/
  #5 (permalink)  
Antiguo 11/03/2010, 19:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Rewriterule me repite acumula las reescrituras

Prueba colocando el dominio:
Código HTML:
Ver original
  1. <base href="http://localhost/" />
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 11/03/2010, 20:19
Avatar de cemansilla  
Fecha de Ingreso: septiembre-2007
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 214
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: Rewriterule me repite acumula las reescrituras

Cita:
Iniciado por David Ver Mensaje
Prueba colocando el dominio:
Código HTML:
Ver original
  1. <base href="http://localhost/" />
Lo solucioné generando las URL de forma absoluta con una constante de un archivo de configuración de PHP:

Código PHP:
define("URL_",     "http://localhost/mlm/"); 
Y genero las URL's asi:

Código PHP:
<a href="<?= URL_?>seccion/index/<?= (!empty($patrocinador)) ? "ref" $patrocinador "/" ""?>"Inicio</a>
Y finalmente cambié el .htaccess para hacerlo más general, gracias al agregado de "seccion/" a las URL's:

Código:
# entrada por referido
RewriteRule ^seccion/(.*)/ref(.*)$ $1.php?ref=$2 [L]

# entrada comun
RewriteRule ^seccion/(.*)$ $1.php [L]
La verdad que me llevó mucho tiempo darme cuenta de como hacerlo y ahora funciona todo, no se si es la mejor forma pero me saqué un problema de encima.

Gracias por los consejos y si saben como mejorarlo bienvenido!

EDIT: ¿como se llama el parámetro del final de cada linea del RewriteRule ([L])?, ya que lo puse porque lo vi por varios lados y no me acuerdo que hacie y quiero interiorizarme en el tema.
__________________
CÉSAR MANSILLA
Web & Mobile Developer - Analista - Creativo - Curioso
http://cesarmansilla.com/
http://cesarmansilla.com/blog/
  #7 (permalink)  
Antiguo 12/03/2010, 08:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Rewriterule me repite acumula las reescrituras

Se llama "flag", puedes leer al respecto en el manual:
http://httpd.apache.org/docs/2.0/mod...ml#rewriterule
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Etiquetas: rewriterule
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 09:30.