htaccess para redireccion de paginas en mi sitio

Iniciado por robe007, 30 Noviembre 2011, 00:08 AM

0 Miembros y 1 Visitante están viendo este tema.

robe007

Que tal colegas !

Me gustaría me ayudaran en lo siguiente con respecto a las reglas que debo de colocar en un archivo htaccess para controlar el acceso a paginas de mi sitio web:

resulta que al entrar al sitio, entro www.misitio.com/?sk=inicio que es lo mismo que www.misitio.com/index.php?sk=inicio

La idea del sk es la del llamado a un archivo: sk=login -> login.php, sk=inicio -> inicio.php

OK, pero si yo escribo en el navegador www.misitio.com/login.php también entra al login, y la verdad no quiero que sea así, ya que antes de entrar directamente al archivo login.php primero valido algunas cosas, por eso lo paso antes de todo por el index.php

¿Cómo debería ser mi archivo htaccess si quiero que el usuario no pueda acceder a ningun archivo php directamente, si no que a la hora que el usuario vaya a www.misitio.com/algo.php o www.misitio.com/carpeta/otro.php se vaya directamente a www.misitio.com/?sk=algo o www.misitio.com/?sk=otro

Espero haberme dado a entender. Gracias por la ayuda brindada.

Saludos  :D

#!drvy

#1
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^(.*).php index.php?q=$1.php [L,QSA]



Cualquier archivo php es cambiado a index.php indicandole de parámetro ?sk el archivo al que se intento acceder.
Ejemplo:

www.server.com/blablabla/php.php
pasa a
www.server.com/index.php?sk=blablabla/php.php


CitarOK, pero si yo escribo en el navegador www.misitio.com/login.php también entra al login, y la verdad no quiero que sea así, ya que antes de entrar directamente al archivo login.php primero valido algunas cosas, por eso lo paso antes de todo por el index.php

Mal, en vez de evitar el problema cambiando las urls, podrias incluir en los archivos php un filtro que determine si fue iniciado directamente
o llamado.

Ejemplo
index.php
Código (php) [Seleccionar]
<?php
$filter 
1;
include_once(
'blablabla.php');
?>



blablabla.php
Código (php) [Seleccionar]
<?php
if(empty($filter)){die('403 No esta permitido llamar este archivo directamente.');}
echo 
'Hola';
?>


Así si llamas a blablabla.php directamente, te salta el error, pero si lo incluyes pasara de largo y mostrara "hola".


Saludos

robe007

#2
Gracias amigo drvy | BSM por responder.

En cuanto al htaccess, en sí no quiero que cuando se coloque:

www.server.com/blablabla/php.php

quede así:

www.server.com/index.php?sk=blablabla/php.php

si no mas bien que quede así:

www.server.com/index.php?sk=php.php

sin el directorio blablabla.

¿Como quedaria en ese caso mi htaccess?

Mil gracias de nuevo por la ayuda.

Saludos

PD: La idea del filtro me parece genial, pero aún así quisiera aprender como quedaría el htaccess