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

Problema con mod_rewrite

Estas en el tema de Problema con mod_rewrite en el foro de Apache en Foros del Web. Hola amigos, Tengo un pequeño conflicto con mod_rewrite. El caso es que quiero que cualquier direccion que no sea /correo/ funcione. Es decir: que funcione ...
  #1 (permalink)  
Antiguo 24/02/2010, 22:54
 
Fecha de Ingreso: julio-2006
Mensajes: 16
Antigüedad: 18 años, 5 meses
Puntos: 0
Problema con mod_rewrite

Hola amigos,

Tengo un pequeño conflicto con mod_rewrite. El caso es que quiero que cualquier direccion que no sea /correo/ funcione. Es decir: que funcione www.dominio.com/fgfgfgd/ y www.dominio.com/correo/ pero cada uno con su respectivo documento. Al añadir la última linea de codigo, el www.dominio.com/correo/ es interpretado como seccion.php y no como correo.php (tal y como lo quiero).

He pensado de hacer un rewritecond, pero es que tengo muchos rewrites, aparte del /correo/. Aquí el codigo:

Código PHP:
Ver original
  1. RewriteRule ^correo/$ "/correo.php"
  2.  
  3. RewriteRule ^(.*)/$ "/seccion.php?id=$1"

Gracias!
  #2 (permalink)  
Antiguo 25/02/2010, 06:07
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 2 meses
Puntos: 334
Respuesta: Problema con mod_rewrite

no se entiende bien lo que quieres...
te recomiendo cambies los puntos por [^\/]+

=)
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 25/02/2010, 07:05
 
Fecha de Ingreso: julio-2006
Mensajes: 16
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Problema con mod_rewrite

Veamos. El código funciona correctamente. El problema es que al añadir la segunda linea (engloba todos los caracteres) se come el rewrite de /correo/. Por tanto, si accedo a /correo/ este interpreta el documento de la segunda linea (seccion.php). He probado de poner la segunda linea primero o el último de todos, pero nada. Primero tiene en cuenta el (.*) y todo los rewrites con un nombre en concreto no los toma en cuenta.
  #4 (permalink)  
Antiguo 25/02/2010, 07:18
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 2 meses
Puntos: 334
Respuesta: Problema con mod_rewrite

entonces pq no reemplazas (.*) por ([^correo]*)
?
prueba haber si te funciona asi
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 25/02/2010, 07:41
 
Fecha de Ingreso: julio-2006
Mensajes: 16
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Problema con mod_rewrite

No no, veo que no me entiendes: si yo pongo en mi htaccess:

RewriteRule ^correo/$ "/correo.php"

Funciona perfecto. Accedo a www.dominio.com/correo/ y este accede a correo.php


Cuando añado (al principio o al final):

RewriteRule ^(.*)/$ "/seccion.php?id=$1"

Cuando accedo a www.dominio.com/correo/ accede a seccion.php y lo que yo quiero es que respete el rewriterule anterior. Eso sí, cualquier otro nombre que no haya especificado, ejemplo: www.dominio.com/baajkahkajhkajhak/ acceda a seccion.php (que esto ya funciona, sólo que no respeta los otros rewrites especificos)

Ahora me entiendes?
  #6 (permalink)  
Antiguo 25/02/2010, 07:57
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: Problema con mod_rewrite

Cita:
Iniciado por Hidek1 Ver Mensaje
([^correo]*)
Eso lo que hace es buscar cualquier cadena que no sea correo. Deberías probarlo antes de adivinar si te va a funcionar o no ¬¬
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 25/02/2010, 08:02
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 2 meses
Puntos: 334
Respuesta: Problema con mod_rewrite

bueno en realidad la expresion seria
([^(correo)\/])

prueba con esta =)


seria algo asi

RewriteRule ^([^(correo)])/$ "/seccion.php?id=$1"
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 25/02/2010, 09:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Tema movido desde PHP a Apache
  #9 (permalink)  
Antiguo 25/02/2010, 15:26
 
Fecha de Ingreso: julio-2006
Mensajes: 16
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Problema con mod_rewrite

Pero tal y como dije anteriormente no solamente tengo /correo/, si no algunos más. Tendría que ponerlos uno a uno? Y en ese caso cómo?

Gracias
  #10 (permalink)  
Antiguo 25/02/2010, 21:22
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 16 años, 3 meses
Puntos: 31
Respuesta: Problema con mod_rewrite

veo que tu tema viene de php entonces ahora lo que puedes hacer es pasar la torea a php
con algo como esto
Código PHP:
<?php 
if(isset($_GET['id'])){
$id =   $_GET['id'];
if(
file_exists('ruta/'.$id)){//.php .html .etc
/*
ejemplo----------------------------
$list = array(
'correo' => 'my_file_correo.php',
'otra' => 'loQueSea.php',
);
*/
include('ruta/'.$id);
}else{
echo 
'pagina no encontrada';
  }
}
?>
pero eso solo es un ejemplo porque es muy malo incluir un file $id/$_GET sin ningún filtro
puedes usar un array para entregar solo lo que quieres y al mismo tiempo usa if(insset
pj
Código PHP:
if(isset($list[$id])){
$listo $list[$id];
}else{
//error!!

y no es necesario que para cada cosa agregues una linea de código con un file distinto al file .htaccess
si el .htaccess tienes esto RewriteRule ^(.*)/$ "/seccion.php?id=$1"
y escribes esto www.dominio.com/correo/
el $_GET['id'] te dará esto correo
y si pones esto: www.dominio.com/images/
el $_GET['id'] te dará esto images
entoces tu sabras que hacer con cada resultado del $_GET[]
ademas entre mas grande es un file .htaccess mas
carga para el servidor Apache.

/Edito pido disculpas a los moderadores por usar código php en el foro de Apache
__________________
╬-----╬
║☺₧☻║
╬-----╬

Última edición por thezzin; 25/02/2010 a las 21:31
  #11 (permalink)  
Antiguo 26/02/2010, 16:21
 
Fecha de Ingreso: julio-2006
Mensajes: 16
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Problema con mod_rewrite

Hidek1, he probado lo que me dices pero no funciona.

thezzin, eso es lo que pensé en un principio, pero no me sirve dado que tengo algun rewrite que no podría hacer con php.

Etiquetas: Ninguno
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 20:32.