2009-06-18 3 views
2

В apache я хотел бы вернуть 404 ошибки всякий раз, когда получаю ошибку 500.Apache: возвращает 404 ошибки вместо 500 ошибок

Его очень странный случай использования, я знаю, но мне интересно, возможно ли его.

Я нашел

http://www.4webhelp.net/tutorials/misc/errors.php

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

ErrorDocument 404 /cgi-bin/error404.cgi

ErrorDocument 500 /cgi-bin/error404.cgi

По предложению статьи, но я не кажется иметь error404.cgi в моей установке Ubuntu. Любая идея, где я могу ее получить, или альтернативное решение?

+0

Директивы ErrorDocument изменяют сообщение, отображаемое пользователю, но они не влияют на код состояния, который сервер передает за кулисами в браузер. Вы просто хотите скрыть сообщение «500 Ошибка» от пользователя (в этом случае этого было бы достаточно), или вы действительно хотите полностью запретить серверу сообщать о 500 в браузер, вне зависимости от того, что пользователь видит? –

+0

Я тоже хочу это сделать, будь то с 'ErrorDocument' или каким-то другим решением Apache – JLewkovich

ответ

0

Вы должны создать error404.cgi. Перейдите в/usr/lib/cgi-bin, а затем создайте файл с именем error404.cgi, который должен быть либо Perl (по умолчанию), либо если Python включен, вы можете использовать его. Если вы не знаете, ни Python или Perl, Heres базовый сценарий Perl, который должен работать для вас: (Вы можете скачать скрипт с моего сайта на cwarren.uuuq.com/downloads/perl/404.pl

 
#!/usr/bin/perl 
use strict; 
print "<html>"; 
print "<head>"; 
print "<title>404 ERROR!</title>"; 
print "</head>"; 
print "<body>"; 
print "<h1>Sorry for the broken link, but this page is not here!</h1>"; 
print "<br><br>"; 
print "<a href=\"javascript:history.go(-1)\">Click here to go back to the previous page.</a>"; 
exit(0); 

Другим вариантом было бы изменить ссылку на /var/www/404.html или что-то в этом роде.

+4

Здесь два вопроса: во-первых, нет причин, чтобы это был сценарий CGI. Целью директивы ErrorDocument может быть любой файл на веб-сервере, включая простой HTML. Во-вторых: в то время как это будет * сказать * «Ошибка 404» для пользователя, он все равно вернет код состояния HTTP 500 в веб-браузер при использовании в качестве ErrorDocument для 500-ошибок. –

+1

Да, мне нужна ошибка 400, возвращенная браузеру, а не просто другая страница, возвращенная пользователю. Спасибо за попытку. – Dave

1

Я знаю, что это не отвечает на ваш вопрос, но вы уверены, что действительно хотите это сделать? 404 - это очень разные вещи, предназначенные для использования в разных целях. Вы говорите пользователю, что URL-адрес, который у них есть, неверен, когда на самом деле это более чем вероятно временная проблема с вашим приложением/сервером. это, чем сказать пользователю, есть временная y проблема, и они должны попробовать еще раз позже? Или, другими словами, почему бы не просто создать страницу ошибок 500?

+0

Да, это в основном очень временное решение. Это ошибка, которую я не могу исправить на каком-то старом коде. Новый код заменит его в месяц, но в среднем мне нужен определенный набор страниц, которые в настоящее время сообщают о 500 ошибках для возврата 404. – Dave

Смежные вопросы