Попробуйте это в .htaccess:
.htaccess
ErrorDocument 404 http://example.com/404/
ErrorDocument 500 http://example.com/500/
# or map them to one error document:
# ErrorDocument 404 /pages/errors/error_redirect.php
# ErrorDocument 500 /pages/errors/error_redirect.php
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ /pages/errors/404.php [L]
RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ /pages/errors/500.php [L]
# or map them to one error document:
#RewriteCond %{REQUEST_URI} ^/404/$ [OR]
#RewriteCond %{REQUEST_URI} ^/500/$
#RewriteRule ^(.*)$ /pages/errors/error_redirect.php [L]
ErrorDocument
перенаправляет все 404s на определенный URL-адрес, все 500s на другой URL-адрес (замените ваш домен).
Правила перезаписи сопоставляют этот URL с вашим фактическим скриптом 404.php. Регулярные выражения RewriteCond могут быть сделаны более универсальными, если вы хотите, но я думаю, вам нужно явно определить все коды ErrorDocument, которые вы хотите переопределить.
Местный Перенаправление:
Change .htaccess ErrorDocument в файл, который существует (должен существовать, или вы получите сообщение об ошибке):
ErrorDocument 404 /pages/errors/404_redirect.php
404_redirect.php
<?php
header('Location: /404/');
exit;
?>
Переадресация на основе номера ошибки
Похоже, вам нужно указать ErrorDocument
строку в .htaccess для каждой ошибки вы хотите переадресовать (см Apache ErrorDocument и Apache Custom Error). Пример .htaccess, приведенный выше, содержит несколько примеров. Вы можете использовать следующее как общий сценарий перенаправления для замены 404_redirect.php выше.
error_redirect.PHP
<?php
$error_url = $_SERVER["REDIRECT_STATUS"] . '/';
$error_path = $error_url . '.php';
if (! file_exists($error_path)) {
// this is the default error if a specific error page is not found
$error_url = '404/';
}
header('Location: ' . $error_url);
exit;
?>
Именно то, что я ищу ... но все равно использовать относительный путь в объявлении ErrorDocument? –
Если вы используете относительный путь, вам нужно указать на существующий файл, и этот файл может затем перенаправить на несуществующий/404/url. Редактирование моего ответа, чтобы показать это сейчас ... – Jay
Могу ли я иметь только один файл, который перенаправляет на любую ошибку? Используя запрос url или что-то еще? –