Php своя страницы ошибок 404

My file .htaccess handles all requests from /word_here to my internal endpoint /page.php?name=word_here. The PHP script then checks if the requested page is in its array of pages.

If not, how can I simulate an error 404?

I tried this, but it didn’t result in my 404 page configured via ErrorDocument in the .htaccess showing up.

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");

Am I right in thinking that it’s wrong to redirect to my error 404 page?

Valerio Bozz's user avatar

asked Sep 4, 2009 at 19:29

Eric's user avatar

2

The up-to-date answer (as of PHP 5.4 or newer) for generating 404 pages is to use http_response_code:

<?php
http_response_code(404);
include('my_404.php'); // provide your own HTML for the error page
die();

die() is not strictly necessary, but it makes sure that you don’t continue the normal execution.

answered Jan 11, 2017 at 14:28

blade's user avatar

bladeblade

11.8k7 gold badges36 silver badges38 bronze badges

2

What you’re doing will work, and the browser will receive a 404 code. What it won’t do is display the «not found» page that you might be expecting, e.g.:

Not Found

The requested URL /test.php was not found on this server.

That’s because the web server doesn’t send that page when PHP returns a 404 code (at least Apache doesn’t). PHP is responsible for sending all its own output. So if you want a similar page, you’ll have to send the HTML yourself, e.g.:

<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
include("notFound.php");
?>

You could configure Apache to use the same page for its own 404 messages, by putting this in httpd.conf:

ErrorDocument 404 /notFound.php

Kzqai's user avatar

Kzqai

22.5k25 gold badges105 silver badges135 bronze badges

answered Sep 4, 2009 at 19:50

JW.'s user avatar

JW.JW.

50.5k36 gold badges114 silver badges142 bronze badges

3

Try this:

<?php
header("HTTP/1.0 404 Not Found");
?>

answered Sep 4, 2009 at 19:36

Ates Goral's user avatar

Ates GoralAtes Goral

137k26 gold badges137 silver badges190 bronze badges

2

Create custom error pages through .htaccess file

1. 404 — page not found

 RewriteEngine On
 ErrorDocument 404 /404.html

2. 500 — Internal Server Error

RewriteEngine On
ErrorDocument 500 /500.html

3. 403 — Forbidden

RewriteEngine On
ErrorDocument 403 /403.html

4. 400 — Bad request

RewriteEngine On
ErrorDocument 400 /400.html

5. 401 — Authorization Required

RewriteEngine On
ErrorDocument 401 /401.html

You can also redirect all error to single page. like

RewriteEngine On
ErrorDocument 404 /404.html
ErrorDocument 500 /404.html
ErrorDocument 403 /404.html
ErrorDocument 400 /404.html
ErrorDocument 401 /401.html

answered Mar 30, 2016 at 10:34

Irshad Khan's user avatar

Irshad KhanIrshad Khan

5,6302 gold badges43 silver badges39 bronze badges

1

Did you remember to die() after sending the header? The 404 header doesn’t automatically stop processing, so it may appear not to have done anything if there is further processing happening.

It’s not good to REDIRECT to your 404 page, but you can INCLUDE the content from it with no problem. That way, you have a page that properly sends a 404 status from the correct URL, but it also has your «what are you looking for?» page for the human reader.

answered Sep 4, 2009 at 19:50

Eli's user avatar

EliEli

97.1k20 gold badges76 silver badges81 bronze badges

Standard Apache 404 error looks like this:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>  

Thus, you can use the following PHP code to generate 404 page that looks exactly as standard apache 404 page:

function httpNotFound()
{
    http_response_code(404);
    header('Content-type: text/html');

    // Generate standard apache 404 error page
    echo <<<HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>  
HTML;

    exit;
}

answered Mar 20 at 16:14

Dima L.'s user avatar

Dima L.Dima L.

3,39332 silver badges30 bronze badges

try putting

ErrorDocument 404 /(root directory)/(error file) 

in .htaccess file.

Do this for any error but substitute 404 for your error.

StackedQ's user avatar

StackedQ

3,9791 gold badge27 silver badges41 bronze badges

answered May 20, 2018 at 19:41

the red crafteryt's user avatar

In the Drupal or WordPress CMS (and likely others), if you are trying to make some custom php code appear not to exist (unless some condition is met), the following works well by making the CMS’s 404 handler take over:

<?php
  if(condition){
    do stuff;
  } else {
    include('index.php');
  }
?>

answered Jan 28, 2019 at 19:38

Mike Godin's user avatar

Mike GodinMike Godin

3,6563 gold badges27 silver badges29 bronze badges

Immediately after that line try closing the response using exit or die()

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
exit;

or

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
die();

answered May 25, 2018 at 4:22

user5891645's user avatar

4

try this once.

$wp_query->set_404();
status_header(404);
get_template_part('404'); 

Nikos Hidalgo's user avatar

answered Mar 31, 2020 at 4:24

Mani Kandan's user avatar

1

  • Главная»
  • Уроки»

  • PHP»

  • Создаем единую страницу для обработки ошибок
  • Метки урока:
  • php
  • кодинг
  • разное

Создаем единую страницу для обработки ошибок

В данном уроке представлено очень простое решение для обработки различных ошибок HTTP, таких как 404, 500 и так далее, в одном файле PHP. Нужно создать массив кодов ошибок и установить правила перенаправления на наш PHP файл. То есть, можно использовать одну страницу для обработки нескольких ошибок.

Перенаправление

В файле .htaccess вашего сервера нужно установить правила для обработки ошибок. В нашем случае мы будем перенаправлять все ошибки в наш файл errors.php, который будет формировать страницу HTML для посетителя. Добавляем в файл .htaccess следующие правила:

ErrorDocument 400 /errors.php
ErrorDocument 403 /errors.php
ErrorDocument 404 /errors.php
ErrorDocument 405 /errors.php
ErrorDocument 408 /errors.php
ErrorDocument 500 /errors.php
ErrorDocument 502 /errors.php
ErrorDocument 504 /errors.php

PHP

Теперь создаем файл errors.php, который должен располагаться в корневом каталоге вашего сервера (так как такое его местоположение установлено в заданных нами выше правилах в файле .htaccess).

$status = $_SERVER['REDIRECT_STATUS'];
$codes = array(
       400 => array('400 Плохой запрос', 'Запрос не может быть обработан из-за синтаксической ошибки.'),
       403 => array('403 Запрещено', 'Сервер отказывает в выполнении вашего запроса.'),
       404 => array('404 Не найдено', 'Запрашиваемая страница не найдена на сервере.'),
       405 => array('405 Метод не допускается', 'Указанный в запросе метод не допускается для заданного ресурса.'),
       408 => array('408 Время ожидания истекло', 'Ваш браузер не отправил информацию на сервер за отведенное время.'),
       500 => array('500 Внутренняя ошибка сервера', 'Запрос не может быть обработан из-за внутренней ошибки сервера.'),
       502 => array('502 Плохой шлюз', 'Сервер получил неправильный ответ при попытке передачи запроса.'),
       504 => array('504 Истекло время ожидания шлюза', 'Вышестоящий сервер не ответил за установленное время.'),
);
 
$title = $codes[$status][0];
$message = $codes[$status][1];
if ($title == false || strlen($status) != 3) {
       $message = 'Код ошибки HTTP не правильный.';
}
 
echo '<h1>Внимание! Обнаружена ошибка '.$title.'!</h1>
<p>'.$message.'</p>';

Готово!

Конечно, код PHP может формировать и более информативную страницу для пользователя. При формировании разметки стоит учесть рекомендации для страниц, выводящих информацию об ошибках.


5 последних уроков рубрики «PHP»

  • Фильтрация данных с помощью zend-filter

    Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

  • Контекстное экранирование с помощью zend-escaper

    Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

  • Подключение Zend модулей к Expressive

    Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

  • Совет: отправка информации в Google Analytics через API

    Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

  • Подборка PHP песочниц

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

Добрый день всем, сегодня на очереди 404 страница. 404 страница – это страница, которая открывается тогда, когда пользователь переходит по не существующему адресу (URL). Я уверен, Вы ее часто встречали. Приведу Вам пример 404 страницы моего блога:


Если Вы “в живую” хотите увидеть как же выглядит эта “волшебная страница” на WPnew.ru, просто наберите в строке браузера несуществующий адрес в блоге. Например, я ввел случайный набор чисел и букв:

Вы также можете посмотреть у себя на блоге, как выглядит 404 страница. Если она Вас устраивает, оставьте ее таковой, если же нет, читайте дальше, мы вместе будет создавать/редактировать “страницу неправильного адреса”.

404 страница нужно обязательно! Она позволит удержать посетителя Вашего блога. Обычно те, кто видят стандартную 404 страницу ошибки, просто уходят с блога (а что еще делать, если перед их глазами какая-то непонятная надпись “Error 404. Page not found”).

Давайте приступим.

  1. В шаблоне демонстрируемого блога (напомню, он имеет адрес FanBar.ru) не оказалась той самой заветной страницы. Если у Вас также ее нет, просто создаем страницу под названием 404.php в теме блога, а у кого она есть, откройте данный файл:
  2. После открытия файла добавьте на первую строчку следующее (если у Вас эта строчка уже есть, то не нужно):
    <!--?php get_header(); ?-->

    А в конце (последняя строчка) добавьте следующий код:

    <!--?php get_footer(); ?-->
  3. Откройте файл page.php и исходя из него поставьте примерно в то же место код:
    <!--?php get_sidebar(); ?-->

    Так как у каждого пользователя свой шаблон WordPress, я не могу рассказать Вам как точно сделать дизайн 404 страницы для Вашего блога. Ориентируйтесь на файл page.php, используйте FireBug, ознакомьтесь с языком CSS, экспериментируйте.

Готовая 404 страница.

Приведу пример 404.php блога FanBar.ru. Я в нее добавил все необходимые комментарии, чтобы объяснить Вам какой код что делает, чтобы облегчить Вам процесс создания 404 страницы ошибки. Эту страницу Вы можете скачать тут (просто разархивируйте архив), а кому лень скачивать, смотрите код ниже:

<!--Вывод шапки-->
<!--?php get_header(); ?-->

<!--Это вывод сайдбара, у Вас наверняка по-другому, и он стоит в конце, наверное,смотрите page.php.
Должно быть наподобие <?php get_sidebar(); ?>, поставьте ее туда же, где она стоит в page.php-->
<!--?php include_once("side1.php"); ?-->
<!--?php include_once("side2.php"); ?-->
<!--Конец вывода сайдбара-->

<!--Индивидуальный стиль шаблона, у Вас, наверняка что-то другое. Используйте FireBug, чтобы узнать название своего стиля-->
<div class="wrap">
<!--Конец стиля-->

<!--Название страницы-->
<h1 class="posttitle">Ошибка 404. Такая страница не найдена.</h1>
<!--Конец названия-->

<!--Начиная отсюда можно скопировать, просто заменив fanbar.ru на адрес своего блога и изменив страницу Контакты-->
<h3>Могут быть несколько причин:</h3>
<ul>
 	<li>Страница перемещена или переименована</li>
 	<li>Страница больше не существует на этом сайте.</li>
 	<li>URL не соответствует действительности.</li>
</ul>
<h3>Предлагаю перейти:</h3>
<ul>
 	<li><a href="https://fanbar.ru">На главную страницу</a></li>
 	<li><a href="https://fanbar.ru/kontakty">Написать в контакты</a></li>
</ul>
<!--Заканчивать процесс копирования тут-->
<h3>Также, можете воспользоваться поиском:</h3>
<!--Вывод поиска. Найдите на своем блоге поиск (обычно в sidebar.php и скопируйте оттуда. У меня он выглядит так-->

<form method="get" id="searchform" action="http://fanbar.ru/">
<div style="margin-left:70px;">
        <input alt="search" type="text" value="<?php echo wp_specialchars($s, 1); ?>" name="s" id="s"></div>
</form><!--Конец вывода поиска-->

<!--Вывод категорий блога. Можете просто скопировать-->
<h3>Или перейти в любую категорию блога:</h3>
<ul>
<!--?php wp_list_cats('sort_column=name'); ?--></ul>
<!--Конец вывода категорий блога.-->

<!--Закрытие стиля wrap, который был в начале. Читайте урок про CSS, если не понятно. -->

</div>
<!--Вывод футера (подвала) темы-->
<!--?php get_footer(); ?-->

В принципе, все. Будут вопросы – пишите в комментариях. И не забывайте завтра — воскресенье, бесплатная видеоконференция со мной. Участвуйте все!

_____________________________

Следующий урок: Урок 56 Плагин Tweetmeme: выводим кнопку retweet на блоге.

<!—Вывод шапки—>
<?php get_header(); ?><!—Это вывод сайдбара, у Вас наверняка по-другому, и он стоит в конце, наверное,смотрите page.php.
Должно быть наподобие <?php get_sidebar(); ?>, поставьте ее туда же, где она стоит в page.php—>
<?php include_once(«side1.php»); ?>
<?php include_once(«side2.php»); ?>
<!—Конец вывода сайдбара—><!—Индивидуальный стиль шаблона, у Вас, наверняка что-то другое. Используйте FireBug, чтобы узнать название своего стиля—>
<div class=»wrap»>
<!—Конец стиля—><!—Название страницы—>
<h1 class=»posttitle»>Ошибка 404. Такая страница не найдена.</h1></br>
<!—Конец названия—>

<!—Начиная отсюда можно скопировать, просто заменив fanbar.ru на адрес своего блога и изменив страницу Контакты—>
<h3>Могут быть несколько причин:</h3>
<ul>
<li>Страница перемещена или переименована</li>
<li>Страница больше не существует на этом сайте.</li>
<li>URL не соответствует действительности.</li>
</ul>
<h3>Предлагаю перейти:</h3>
<ul>
<li><a href=»http://fanbar.ru»>На главную страницу</a></li>
<li><a href=»http://fanbar.ru/kontakty»>Написать в контакты</a></li>
</ul>
<!—Заканчивать процесс копирования тут—>

<h3>Также, можете воспользоваться поиском:</h3>

<!—Вывод поиска. Найдите на своем блоге поиск (обычно в sidebar.php и скопируйте оттуда. У меня он выглядит так—>
<form method=»get» id=»searchform» action=»http://fanbar.ru/»>
<div style=»margin-left:70px;»>
<input alt=»search» type=»text» value=»<?php echo wp_specialchars($s, 1); ?>» name=»s» id=»s» />
</div>
</form>
<!—Конец вывода поиска—>

<!—Вывод категорий блога. Можете просто скопировать—>
<h3>Или перейти в любую категорию блога:</h3>
<ul>
<?php wp_list_cats(‘sort_column=name’); ?>
</ul>
<!—Конец вывода категорий блога.—>

<!—Закрытие стиля wrap, который был в начале. Читайте урок про CSS, если не понятно. —>
</div>

<!—Вывод футера (подвала) темы—>
<?php get_footer(); ?>

Как вам урок?

Спасибо, очень приятно быть полезными!

Лучшая благодарность — это комментарий к уроку и «шеринг» в соц. сетях. Спасибо!

Помогите стать лучше, скажите что не так?

Непонятно
Урок устарел
Другое

Спасибо за помощь в развитии проекта!

PHP: пишем собственную страницу обработки ошибок Apache (404 и др.)

У нормального хостера проблема решается очень легко: достаточно написать свой файл .htaccess
и положить его в корневую папку сайта.

Синтаксис нужной нам директивы:

ErrorDocument код-ошибки документ

Примеры:

ErrorDocument 403 /error.html
ErrorDocument 404 /bad_urls.php
ErrorDocument 500 http://my.server.com/cgi-bin/error

Тремя показанными ошибками, как самыми частыми, и ограничимся. Добавив к файлу .htaccess директивы, на всякий случай отключающие устаревшие «волшебные кавычки» и явно указывающие кодировку сайта (у нас русскоязычная windows), получим вот что:

AddDefaultCharset windows-1251 
php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
php_flag magic_quotes_sybase off
ErrorDocument 403 /error.php?e=403
ErrorDocument 404 /error.php?e=404
ErrorDocument 500 /error.php?e=500

Проблемы с созданием файла под именем .htaccess?

Пользуйтесь не проводничком и блокнотиком, а нормальным файл-менеджером, например, Far

Пока не умеете с ним работать (там есть и отличные плагины FTP/SFTP для закачки файлов на сайты), нет смысла работать и с хостами :)

Имейте в виду, что если вы напишете в директиве ErrorDocument полный адрес скрипта обработки ошибок вида
http://my.server.com/error.php?e=404 вместо /error.php?e=404, то будет редирект 302 на указанный URL вместо корректной обработки ошибки 404. Ну и неправильный юзвериный адрес исчезнет из адресной строки браузера :)

Но! При указании относительного адреса обработчика error.php ссылки, выданные на страницу обработчика как относительные (то есть, <a href="my.php">link<a> или <a href="/my.php">link<a>, будут восприниматься скриптом как адреса от неправильного URL. Правильно в этом случае выдавать <a href="http://my.server.com/my.php">link<a> (где my.server.com — имя вашего сервера), а эту самую my.server.com получать из настроек сайта.

Саму обработку для удобства сделаем одним файлом error.php — не писать же кучу отдельных документов? Наш обработчик будет параметром получать номер ошибки. Файл error.php, как видно из директивы ErrorDocument, нужно также скопировать в корневую папку сайта.

Вот пример кода такого обработчика ошибок сервера:

<?php 
require_once ("functions.php");

$id=get_int('e');
if (empty($e)) { redirect (); }
title ("Ошибка $e");
include "header.php";
$emsgs = array (
 403 => 'Сервер не отвечает', 404 => 'Документ не найден', 500 => 'Внутренняя ошибка сервера'
);
$emsg = 'Описание ошибки не найдено';
if (array_key_exists($e, $search_array)) $emsg = $emsgs[$e];
echo '
 <p>Что-то пошло не так... Сервер вернул код ошибки '.$e.' ('.$emsg.')
 <p>Инфа для пользователя и ссылки, куда податься, обычный HTML
';
if (isset ($_SERVER['REQUEST_URI']))
 echo '<p>Вы пытались перейти на адрес : '.request_url().'</p>';
if (isset ($_SERVER['HTTP_REFERER']))
 echo '<p>Вы пришли с адреса: '.$_SERVER['HTTP_REFERER'].'</p>';
include "footer.php";
?>

Здесь

require_once ("functions.php");

подключает гипотетическую библиотеку функций сайта, нам, в общем-то, для примера достаточно трёх.

1. Функция redirect просто отправляет юзера туда, откуда он пришёл (на случай, если сам error.php вызван напрямую и без обязательного параметра):

function redirect () {
 if (isset ($_SERVER['HTTP_REFERER'])) {
  header('Location: '.$_SERVER['HTTP_REFERER']);
 }
 else {
  header('Location: index.php');
 }
}

2. Функция get_int возвращает целое число, полученное из параметра URL-адреса $_GET с именем $name или пустую строку, если допустимое число не передано. Функция может выглядеть, например, так:

function get_int($name) {
 $var='';
 if (isset($_GET[$name])) $var = 0 + intval(htmlspecialchars(trim($_GET[$name])));
 return $var;
}

3. Функция title сохраняет переданную ей величину в статической переменной, скажем,

 function title ($str) { 
  static $title='';
  if (!empty($str)) $title=$str;
  return $title;
 }

чтобы потом файл, выводящий разметку страницы, мог этой переменной воспользоваться для формирования заголовка окна браузера, допустим, так:

<title><?php echo title(''); ?></title>

(код может быть помещён в файл header.php — стандартную «шапку» всех страниц сайта). Так что, директивы

include "header.php";
include "footer.php";

как раз подключают стандартные «шапку» и «подвал» сайта.

Наконец, два последних условия позволяют выяснить, куда юзер хотел попасть и откуда он пришёл,
при желании, любую из выдаваемых строк можно сделать ссылкой средствами HTML.

Ах, да, часто в качестве ссылки на текущий адрес лепят просто $_SERVER['REQUEST_URI'], забывая, что это

имя скрипта, начиная от корневой директории виртуального хоста

но никак не полный путь.

Функция request_url как раз и пытается грамотно получить на PHP текущий полный URL-адрес страницы, с учётом того, что соединение может быть не по 80 порту и не по http, а по https. Вот эта волшебная функция, считаем, что она там же, в functions.php:

function request_url() {
 $result = '';
 $port = 80;
 if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']=='on')) {
  $result .= 'https://';
  $port = 443;
 } 
 else $result .= 'http://';
 $result .= $_SERVER['SERVER_NAME'];
 if ($_SERVER['SERVER_PORT'] != $port) $result .= ':'.$_SERVER['SERVER_PORT'];
 return $result.$_SERVER['REQUEST_URI'];
}

Что у нас вышло можно увидеть, например, щёлкнув по этой несуществующей ссылке
на страницу моего блога.

19.02.2015, 14:50 [14344 просмотра]


К этой статье пока нет комментариев, Ваш будет первым

Introduction: Custom 404 Error Page in PHP

Every website gets the occasional, frustrating Error 404: Not Found. And if you have your own website, you may wish to customize these error pages. Thankfully, it’s not that hard to do. Your error pages may be of any extension you want. Usually, they are written in SHTML. But SHTML isn’t very dynamic in terms of what can be done with it. So I went over to PHP for my error pages. The coding wasn’t hard either. So let’s begin.

Step 1: Requirements

If you have a website, your hosing server should have PHP installed. If not, ask your server’s admin if they would be kind enough to install it. If you are just screwing around wasting time, you need some type of emulator. If you’re on Windows, use easyPHP for this. If you’re on Linux and can spare the resources, get: apache2 and php (for Ubuntu, sudo apt-get install apache2 php). If you’re on mac, I have no idea what you can use.

Once you meet these requirements, go to the next step.

Step 2: .htaccess

As stated on the cover page, your custom error page(s) can have any extension you want. But you can’t use it if your server isn’t told to use it. This is where .htaccess comes in. .htaccess is a file named, well, «.htaccess». This file can be used to configure your site to certain degrees. What we will do is go ahead and point the 404 error to 404.php (which, ironically, doesn’t exist yet). This will be a hidden file (every file that begins with a dot is a hidden file). So make sure you can view hidden files. In this file, write the following code and save it:

ErrorDocument 404 /404.php

And while you’re at it, if you feel like it:

ErrorDocument 400 /400.php
ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php #Don't re-add this line
ErrorDocument 500 /500.php

Step 3: 404.php

And the actual error page. I’m going to ignore the whole «let’s follow standards» thing I usually do. The reason I chose PHP for the error page is because you can figure out the source of the error to an extent; you can see if the missing page was typed in the address bar, if it was a link on your site, or if it was a link on a different site. This is achieved by parsing a server variable. You can also parse a couple other server variables and see exactly what was put into the address bar. For this ible, we will only grab the requested page and the referrer, if any.

<?php echo $_SERVER['REQUEST_URI']; ?> does not exist, sorry.

The line above will tell the visitor that the page they want, along with the page’s path (preceded with a slash), does not exist. It’s helpful to tell the specific page because the hyperlink they followed, if they followed, may not reflect the page’s path. The next code will grab if there was a referrer and who it was.

<?php
if(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'])){
$refuri = parse_url($_SERVER['HTTP_REFERER']); // use the parse_url() function to create an array containing information about the domain if($refuri['host'] == "your-domain.com"){
//the link was on your site
}
else{ //the link was on another site. $refuri['host'] will return what that site is
} } else{
//the visitor typed gibberish into the address bar
}
?>

On my site, I told the user one of three things to do as per the code. If the referrer was my site, email me and let me know. If the referrer was on a different site, email them and let them know. If they types randomly in the address bar, stop doing that.

<?php
if(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'])){
$refuri = parse_url($_SERVER['HTTP_REFERER']); // use the parse_url() function to create an array containing information about the domain
if($refuri['host'] == "cutlery-in-the-toaster.com"){
echo "You should email fork@cutlery-in-the-toaster.com and tell me I have a dead link on this site.";
}
else{
echo "You should email someone over at " . $refuri['host'] . " and let them know they have a dead link to this site.";
}
}
else{
echo "If you got here from Angola, you took a wrong turn at Catumbela. And if you got here by typing randomly in the address bar, stop doing that. You're filling my error logs with unnecessary junk.";
}
?>

Step 4: Testing

First, go to your site like normal. It should show up normally. To test if your .htaccess is being read, insert random junk anywhere inside it and save it. Reloading the page should give a 500 error. If not, make sure your site is set up to use .htaccess files (I just had to edit my server’s config files to get it to work). If it still don’t work, try deleting all the blank spaces and reinserting them.
Else, undo the junk and re-save it. Now try to visit a non-existent page. You should see your 404 page. Add a few dead links on your site and try to follow them. You should end up with the same 404 page but with different content. Add a dead link to another website and the 404 page will have different content.

Step 5: Files

Here are the files used in this ible. Edit as desired/required.

Понравилась статья? Поделить с друзьями:
  • Php проверка запроса на ошибки
  • Php при ошибке не показывает страницу
  • Php при ошибке не выводит код
  • Php получить строку с ошибкой
  • Php показывать ошибки display errors