как войти, какая страница была "не найдена"? (Попытка пользовательской страницы ошибок с htaccess, php, http_referer) - PullRequest
2 голосов
/ 29 июня 2009

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

При использовании следующего кода .htaccess, когда запрашивается несуществующая страница, пользователь перенаправляется на my_404.php.

Options -Indexes

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

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

Например, A.php является допустимой веб-страницей, а b.php - нет. Так что, если я нахожусь на A.php и пытаюсь просмотреть b.php (несуществующую страницу) ... это то, что «кто-то пытался просмотреть B.php». Как мне это сделать?

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

EDIT

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

Ответы [ 4 ]

2 голосов
/ 29 июня 2009

Когда вы используете удаленный 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.

2 голосов
/ 29 июня 2009

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

Архивы Stackoverflow:

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

2 голосов
/ 29 июня 2009

Переменная, которую вы ищете, называется $ _SERVER ['REQUEST_URI']. Он содержит исходный запрос, сделанный клиентом на ваш сервер.

Вы можете увидеть список других переменных $ _SERVER здесь .

Edit:

После небольшого поиска в Google ваша проблема заключается в том, что ваша страница ошибки указана с помощью спецификатора http: //. Измените ваш htaccess, чтобы ErrorDocument указывался как локальный файл, например:

ErrorDocument 404 /www/my_404.php 

После этого $ _SERVER ['REQUEST_URI'] должно содержать правильное значение.

0 голосов
/ 29 июня 2009

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

var_dump($_SERVER);

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

...