# redirect all requests to index.php loader
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
ПРОБОВАЛ ВОТ ТАК ТОЖЕ НЕ РАБОТАЕТ
# redirect all requests to index.php loader
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
ErrorDocument 404 /err404.html
</IfModule>
Браузер и сервер общаются по протоколу HTTP или HTTPS. При вводе адреса в адресную строку браузера или при отправке формы происходят запросы определённого формата. В ответ на этот запрос сервер отравляет ответ определённого формата. Этот ответ включает в себя: версию протокола, результат запроса, заголовки и тело ответа. Код 404 - это один из множества результатов запроса. К примеру 403 (ошибка доступа), 500 (критическая ошибка сервера). По умолчанию сервер отправляет результат 200 (успешное выполнение). Страница же передаётся в теле ответа.
Т.е. для того чтобы получить собственную страницу с ошибкой 404. Вам надо отослать собственную страницу с результатом 404. Длю установки результата в php есть функция http_response_code.
Пример:
<?php
$requestUri = $_SERVER['REQUEST_URI'];
// Простая адресация
if ($requestUri == '/') {
drawMainPage();
} elseif ($requestUri == '/second') {
drawSecondPage();
} else {
drawNoFoundPage();
}
// Главная страница
function drawMainPage() {
echo '<h1>My site</h1><hr><p>Main page</p>';
}
// Вторая страница
function drawSecondPage() {
echo '<h1>My site</h1><hr><p>Second page</p>';
}
// Ошибка 404
function drawNoFoundPage() {
http_response_code(404);
echo '<h1>My site</h1><hr><p>Page not found</p>';
}
Устанавливать результат (функция http_response_code) как и вывод заголовков (функция header) необходимо делать раньше чем вывод тела ответа.
Странно, что никто это ещё не посоветовал. В .htaccess (за пределами IfModule):
ErrorDocument 404 /err404.html
И так по строчке для всех страниц и ошибок, которые нужны.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей