Hola,
estoy teniendo problemas con mi mvc y las url amigables, este es mi .htacces
Código:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*).php$ index.php?controlador=$1 [L]
RewriteRule ^(.*)/(.*).php$ index.php?controlador=$1&accion=$2 [L]
RewriteRule ^(.*)/(.*)/(.*).php$ index.php?controlador=$1&accion=$2&id=$3 [L]
</IfModule>
y este codigo es como proceso las url para saber que cotrolador y accion se tiene que ejecutar
Código PHP:
Ver originalif(strrpos($_SERVER['QUERY_STRING'],'/')){ $debug->info('entro con url amigables');
$uri = explode('/',$_GET['controlador']); //obtengo el controlador
$controller = $uri[0];
$action = $uri[1];
}
}
else{
$debug->info('entro sin url amigables');
//obtengo el controlador que se envia por $_GET
$controller = $_GET['controlador'];
//obtengo la accion que se envia por $_GET
if(isset($_GET['accion'])) { $action = $_GET['accion'];
}
}
y entonces si yo entro a misiti.com/seccion/mostrar.php me lleva correctamente al controlador y la acccion.
Pero si yo quiero entrar a la administración misitio.com/admin
me intenta redireccionar a index.php?controlador=admin&accion=index
A esto lo soluicone (nose si es la mejor opcion) asi:
en el router:
Código PHP:
Ver originalif(strrpos($_SERVER['QUERY_STRING'],'/')){ $debug->info('entro con url amigables');
$uri = explode('/',$_GET['controlador']); $debug->info('entro con url amigables');
//obtengo el controlador
$controller = $uri[0];
$action = $uri[1];
}
}
else{
$debug->info('entro sin url amigables');
//obtengo el controlador que se envia por $_GET
$controller = $_GET['controlador'];
//obtengo la accion que se envia por $_GET
if(isset($_GET['accion'])) { $action = $_GET['accion'];
}
}
$debug->info($controller,'controlador enviado');
$debug->info($action,'accion enviada');
//seteo el controlador si esta vacio seteo el controlador por default
if( empty($controller) || $controller=='admin') { $controller = 'indexController';
}
else {
$controller = $controller.'Controller';
}
$debug->info($controller,'controlador');
$debug->info($action,'accion');
y en el directorio admin arme un .htaccess que tiene:
Código:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /rwa/admin
</IfModule>
pero ahora tengo otro problema, cuando quiero entrar al admin sin estar logueado me muestra, el formulario de login que es el siguiente:
Código HTML:
Ver original <h1>Ingreso Administraci
ón
</h1>
<p>Bienvenido. Para iniciar sesi
ón complete el formulario.
</p>
<?php
if($mensaje['mensaje']!=''){?>
<div class="<? echo $mensaje['tipo'];?>">
<? echo $mensaje['mensaje'];?></div> <?php
}
else{?>
<div class="<? echo $mensaje['tipo'];?>">
<? echo $mensaje['mensaje'];?></div> <?php
}
?>
<form action="index.php?controlador=index&accion=login" method="post"> <input name="username" type="text" class="input large" value="username" />
<input name="password" type="password" class="input large" value="password" />
<img src="librerias/captcha.php" width="100" height="30" alt="Código de Seguridad"/></p> <p><br/><input type="text" value="" class="input large" name="captcha"/>
<p><input type="submit" name="Submit" id="button" value="Ingresar" class="button"/></p>
pero dejo de mostrarme la imagen del captcha (el scr de la imagen es ../librerias/ si lo pongo entre comillas me sale la url del foro) y en el firebug me muestra que el server[query_string], el controlador y la accion a buscar son:
Cita: controlador: libreriasController
accion: index
Query String: controlador=librerias/index
la verdad que ya no entiendo que pasa..... si alguien me puede guiar un poco.... desde ya muchas gracias