Я пытаюсь показать документ об ошибке HTTP со страницы PHP, но я хотел бы, чтобы исходный URL-адрес оставался в адресной строке, чтобы не запутать сканеры поисковых систем и разрешить перезагрузку страницы в случае, если это временная проблема.
Я сделал функцию перенаправления в PHP, которая выглядит примерно так:
public static function Redirect($url, $code = '303 See Other') {
header('HTTP/1.1 ' . $code);
header('Location: ' . $url);
exit(0);
}
Если я хочу отобразить документ об ошибке, такой как 403 Forbidden, я бы сделал следующее: Redirection::Redirect('/errordocs/403.php', '403 Forbidden');
и все бы работало нормально.
Как я уже сказал, URL-адрес пользователя изменится на /errordocs/403.php
, чего я хочу избежать.
Что я действительно пытался сделать, так это удалить строку header('Location: ' . $url);
, если код HTTP был 4xx или 5xx. Я надеялся, что это приведет к тому, что Apache отобразит правильный документ, поскольку мой .htaccess настроен так, чтобы он указывал на соответствующие страницы ошибок (что и так работает нормально).
Что я на самом деле получил от этого, так это стандартные сообщения Google Chrome, когда что-то ломается, а не мои довольно пользовательские документы об ошибках.
В быстром консенсусе, как лучше всего это сделать сейчас? Заставить эхо страницы вместо перенаправления?