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
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
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<?php
$filter = 1;
include_once('blablabla.php');
?>
blablabla.php<?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