Я хочу, чтобы мои пользователи имели доступ только к моим php-файлам, если они пытаются получить доступ к папкам, которые я хочу включить в свой файл 404

У меня есть строка запроса для включения моих страниц, на моей домашней странице, как вы видите ниже, и она работает нормально, Im включает мои страницы в порядке.

Но что-то не так происходит, и я не нахожу, как я могу это решить.

Я попытаюсь использовать мой isse с примером: у меня есть папка «учителя» внутри. У меня есть два документа pdf и страница «documents.php». Чтобы перейти на эту страницу документов, Im acessing: «htp: // localhost / website / teachers / documents», и он работает нормально.

Но если у меня есть «htp: // localhost / website / teachers /», я могу получить документы PDF и мою страницу, как вы видите на моем изображении ниже.

введите описание изображения здесь

Но я не хочу этого, я хочу, чтобы, если какой-то пользователь пытается «htp: // localhost / website / teachers /», я хочу включить свой файл 404 ( require_once('inc/404.php'); )

Моя строка запроса:

 @$url = $_GET['url']; $url = explode('/', $url); $url[0] = ($url[0] == NULL ? 'index' : $url[0]); if(file_exists('inc/'.$url[0].'.php')){ require_once('inc/'.$url[0].'.php'); } elseif(file_exists($url[0].'/'.$url[1].'/'.$url[2].'.php')){ require_once($url[0].'/'.$url[1].'/'.$url[2].'.php'); } elseif(@file_exists($url[0].'/'.$url[1].'.php')){ require_once($url[0].'/'.$url[1].'.php'); } else{ require_once('inc/404.php'); } 

Вы видите, что я делаю неправильно, чтобы не получить результат, который я хочу?

Мой файл htaccess:

 RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 

Существует более простое решение.

Добавьте эту строку в начало файла .htaccess:

 Options -Indexes 

Таким образом, вы не сможете увидеть содержимое папки.


EDIT: решение правила htaccess (которое находится в папке website )

 ErrorDocument 404 /website/inc/404.php RewriteEngine On RewriteBase /website/ RewriteRule ^teachers/$ - [R=404,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [L]