как записать какая страница не найдена? (Попытка пользовательской страницы ошибок с помощью htaccess, php, http_referer)

Мне просто было интересно, как получить ссылку на веб-страницу, которая не была найдена на моем сайте.

С помощью следующего кода .htaccess при запросе несуществующей страницы пользователь перенаправляется на my_404.php.

Options -Indexes

ErrorDocument 404 http://mysite.com/my_404.php

Если мне нужно отследить, какая была ссылка на страницу, которая не была найдена, как мне это сделать??

Например, A.php является допустимой веб-страницей, а b.php — нет. Итак, если я нахожусь на A.php и пытаюсь просмотреть b.php (несуществующую страницу).. .htaccess перенаправляет меня на my_404.php, на котором я вижу HTTP_REFERER как A.php .. но я ищу это "кто-то пытался просмотреть B.php". Как я могу это сделать?

Спасибо за вашу помощь.

ИЗМЕНИТЬ

Пожалуйста, смотрите: я не хочу проверять файлы журналов. Я спрашиваю о чем-то на странице. Спасибо.


person TigerTiger    schedule 29.06.2009    source источник


Ответы (4)


Когда вы используете удаленный URL-адрес ErrorDocument, такой как http://mysite.com/my_404.php, Apache отправит перенаправление на этот URL-адрес клиенту, поэтому вы не можете получить URL-адрес, который вызывает 404 из $_SERVER['REQUEST_URI'], как предложил Мэтт Бриджес. Возможно, вы захотите попробовать использовать локальный ErrorDocument (без схемы и имени сервера), например:

ErrorDocument 404 /my_404.php

Я подозреваю, что $_SERVER['REQUEST_URI'] вернет первоначально запрошенный URL.

person Steef    schedule 29.06.2009

Скорее всего, это уже сделано в вашем файле журнала Apache. Вы можете просто проанализировать данные, а не записывать их дважды.

Архивы Stackoverflow:

Дополнительный соответствующий контент:

person Sampson    schedule 29.06.2009
comment
Я не хочу проверять файлы журнала. Я просто хочу проверить это, когда я нахожусь на странице 404. Я не пытаюсь записывать данные дважды. - person TigerTiger; 29.06.2009


Посмотрите на свой массив $_SERVER в my_404.php

var_dump($_SERVER);

Думаю, вы найдете то, что вам нужно. :-)

person Philippe Gerber    schedule 29.06.2009
comment
Сделал это. Ничего полезного. Я имею в виду, упоминая, b.php. - person TigerTiger; 29.06.2009
comment
Что, если вы попробуете ErrorDocument 404 /my_404.php (без хоста)? - person Philippe Gerber; 29.06.2009