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

Error con rewriterule

Estas en el tema de Error con rewriterule en el foro de Apache en Foros del Web. Buenas, tengo un problema con rewriterule. No tengo mucho rodaje con .htaccess y he puesto lo siguiente: Código: <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteRule ...
  #1 (permalink)  
Antiguo 17/04/2011, 12:37
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 14 años, 6 meses
Puntos: 1
Error con rewriterule

Buenas, tengo un problema con rewriterule. No tengo mucho rodaje con .htaccess y he puesto lo siguiente:

Código:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

RewriteRule ^admin/mostrar/(.+)/$ $1.php [L]

</IfModule>
Hasta aqui parece bastante simple. Si tengo un enlace, por ejemplo <a href="admin/mostrar/clientes/>Ver clientes</a>, va a admin/mostrar/clientes/, mostrando la pagina clientes.php.

El problema es que, si voy a esta pagina y pulso un enlace dentro de ella, por ejemplo, <a href="admin/mostrar/pedidos/">Ver pedidos</a>, en vez de ir a pedidos.php lo que hace es ir a admin/mostrar/clientes/admin/mostrar/pedidos, lo cual da error, ya que no existe.

Es decir, toma el "directorio" en el que estamos (directorio ficticio), que es admin/mostrar/clientes y dentro de este busca admin/mostrar/pedidos

¿Sabeis donde está el error?
  #2 (permalink)  
Antiguo 17/04/2011, 16:09
Avatar de softmaster  
Fecha de Ingreso: diciembre-2008
Mensajes: 230
Antigüedad: 12 años, 6 meses
Puntos: 12
Respuesta: Error con rewriterule

no creo que puedas, por que es como que estan en el mismo lugar... cambia (.+) por esto (.*)

si no pasas ningun parametro por la url, seria mejor algo mas sencillo.. a ver que te parece

RewriteRule ^admin/mostrar/pedidos/$ pedidos.php [L]

RewriteRule ^admin/mostrar/clientes/$ clientes.php [L]
  #3 (permalink)  
Antiguo 17/04/2011, 16:27
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Error con rewriterule

La cosa es que recuerdo haberlo hecho antes, pero fue usando wordpress. Recuerdo que en todos los enlaces ponia algo asi:

Código:
<a href="<?= get_bloginfo('url');?>/admin/mostrar/clientes/">Ver clientes</a>
Así si me funcionaba, porque usaba direcciones absolutas y quedaba un enlace del tipo www.dominio.com/admin/mostrar/clientes/. Sin embargo, ahora no sé como obtener la direccion absoluta (ya que no uso la api de wordpress)

Por ejemplo, estoy en local, la direccion es http://localhost:8888/pagina/

¿Como puedo hacer para obtener esta direccion? Así podria usarla del mismo modo que lo hacia con wordpress, y la imprimira para que me quedara la direccion absoluta http://localhost:8888/pagina/admin/mostrar/clientes

He probado con las siguientes variables:

$_SERVER['SERVER_NAME'], $_SERVER['DOCUMENT_ROOT'], $_SERVER['PATH_INFO'],

y alguna otra, pero ninguna me devuelve lo que necesito, que es http://localhost:8888/pagina/
  #4 (permalink)  
Antiguo 17/04/2011, 16:42
 
Fecha de Ingreso: marzo-2011
Mensajes: 184
Antigüedad: 10 años, 2 meses
Puntos: 11
Respuesta: Error con rewriterule

Yo tengo:

RewriteEngine On
RewriteBase /

Antes de empezar con los rewriterule.

En uno mío antes de empezar todo, seguramente el error es porque al finalizar, te toma toda la cadena como la "posible cadena" (.*).

Ah, tienes $1.php (no estará ahí el error?)... no sería mejor crear una página para seleccionar página y mandar una variable pagina para que ese archivo la obtenga y de esa manera seleccione la página que quieres que te aparezca? Ya que nunca he visto que se maneje de esa manera una variable en un .htaccess. Lo que digo es lo siguiente:

selector.php?pagina=$1

Y con el pagina sabrías si quieres que selector.php abra ya sea clientes o pedidos o cualquier otra página. Básicamente también lo que dice postmaster es más censillo (si, con c, porque hoy es domingo O.o)

Saludos!

__________________
“Un estómago vacío, es un mal consejero.” Albert Einstein

Reflexiones, humor gráfico, chistes, Deporte, Consejos y tips
  #5 (permalink)  
Antiguo 17/04/2011, 16:49
Avatar de softmaster  
Fecha de Ingreso: diciembre-2008
Mensajes: 230
Antigüedad: 12 años, 6 meses
Puntos: 12
Respuesta: Error con rewriterule

no era asi en wordpress ?

<?php echo get_settings('home'); ?>
  #6 (permalink)  
Antiguo 18/04/2011, 05:02
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Error con rewriterule

Acabo de probar con $_SERVER['HTTP_HOST'], y me devuelve localhost:8888. Tengo que suponer que en el servidor me dará www.dominio.com. Con esto ya me funciona, si todos los enlaces los manejo del modo <a href="<?= $_SERVER['HTTP_HOST'];?>/admin/mostrar/enlace/">Enlace</a>, lo que me parece un poco engorroso, aunque factible.

Por eso pienso que el error tiene que estar en el rewritebase. He estado buscando por ahi, y he usado rewritebase / y rewritebase /carpeta/, pero de ninguna de las dos maneras me ha funcionado.

¿Alguna idea?
  #7 (permalink)  
Antiguo 18/04/2011, 07:04
Avatar de JoshMex
Moderador Webhosting
 
Fecha de Ingreso: enero-2006
Mensajes: 4.057
Antigüedad: 15 años, 4 meses
Puntos: 166
Tema trasladado al foro de Apache
__________________
JoshMex
Desarrollador Plataforma Microsoft / Windows / ASP / ASP.NET / SQL Server
Es inútil hacer cualquier cosa a prueba de tontos, porque los tontos son muy ingeniosos

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 23:45.