У меня есть строка запроса для включения моих страниц, на моей домашней странице, как вы видите ниже, и она работает нормально, 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]