#9 Javascript y control de accesos = acceso autorizado a todo
No, en serio, ¿Como pretendes controlar con javascript temas de acceso? Eso no se tiene que gestionar del lado del cliente. Te desactivan JS y fin del control. Se debe gestionar del lado del servidor, en este caso PHP.
Ahí #1 te deniega el acceso porque accede a www.tudominio.com/ y esta carpeta tiene prohibido mostrarse por lo que no deja. Deberías gestionar los permisos de / y decir que puedan acceder todos.
#4 Con eso solo controlarías que ha pasado al menos una vez por index.php, pero no que viene de allí, con lo que tampoco es un buen control.
#2 Con eso no evitas que el usuario lea tus ficheros, los cuales es posible que no quieras que se vean. Con un simple crawling a tu dominio te podría ver los ficheros y descargarlos sin dificultad, sin venir de index . Sin embargo con un 400 restringirías a que se leyese en cualquier momento, lo cual tampoco se busca .
La manera más "gocha" pero rápida sería usar la variable $_SERVER['HTTP_REFERER'] la cual te dice de donde viene el usuario, si viene de tu index déjale pasar, sino mata la conexión (die).
Yo lo que haría para algo serio, sería una index, en la cual se recibiera un parámetro GET y según ese parámetro mostrar una parte u otra de la web.
Por ejemplo:
index.php?p=1 > Index
index.php?p=2 > Fotos
index.php?p=3 > Videos
index.php?p=4 > Noticias
En cualquier otro caso (es decir, p=x) matas la conexión (die). Y el resto de ficheros protegidos por el deny all. Eso si, haz que la carpeta / redirija a index.php, de lo contrario no podrán navegar.
Desde la index lo único que tendrás que hacer es un switch del $_POST['p'] y en función de lo que venga haces include de la parte de la web que desees, si viene un p distinto haces include de error.php el cual dice que no existe dicho apartado.
Esta forma de hacer las webs la he empleado bastantes veces y me resulta bastante efectiva con webs de pequeño o mediano tamaño (si no tienes más de 20 apartados es manejable, en otro caso avísame y te propongo otra manera de hacerla).