Slavenin999
@Slavenin999
программист php/erlang/elixir/js

Отслеживание страницы 404?

Доброго времени суток Хабр!


Возникла проблема. В htaccess прописан редирект при 404 ошибке.
ErrorDocument 404 /errors/404/


и все, вроде бы, хорошо, все работает. Но возникла потребность определять и логировать страницы с которых пользователя бросило на страницу ошибки. И вот тут то возник затык. Апач при перенаправлении где-то теряет адрес, который был в адресной строке до редиректа. Т.е. не могу определить страницу которая была вбита в браузере/ссылке. Ни в HTTP_REFERER ни в REDIRECT_URL её нет. Возможно, можно как-то настроить редирект так, чтобы приходил еще и адрес, пускай в виде GET параметра. Хоть где-нибудь
  • Вопрос задан
  • 4826 просмотров
Пригласить эксперта
Ответы на вопрос 4
ZmeeeD
@ZmeeeD
А мне казалось это не так делается…
Url не должен меняться, должен меняться ответ от сервера, своя кастомная страничка с извинялками или еще что.
Ответ написан
shushu
@shushu
.htaccess:
ErrorDocument   404 /404.php


404.php:
<?php

header('Content-Type: text/plain; charset="UTF-8');
print_r($_SERVER);


request: localhost/test/dshgsdgsdhbshjdfh
output:
Array
(
    [REDIRECT_REQUEST_METHOD] => GET
    [REDIRECT_STATUS] => 404
    ....
    [HTTP_REFERER] => http://localhost/test.html
    [REDIRECT_URL] => /test/dshgsdgsdhbshjdfh
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /test/dshgsdgsdhbshjdfh
    [SCRIPT_NAME] => /404.php
    [PHP_SELF] => /404.php
    [REQUEST_TIME_FLOAT] => 1375894390.798
    [REQUEST_TIME] => 1375894390
    [argv] => Array
        (
        )

    [argc] => 0
)


Как видим, и реферер и путь, который «не найден» есть. Или я вас не понял?
Ответ написан
Slavenin999
@Slavenin999 Автор вопроса
программист php/erlang/elixir/js
нашёл корень проблемы, но ума не приложу, как его решить. Как оказалось на сервере стоит связка apache+nginx соответственно сначала nginx перехватывает управление видит 404 выдает 301 редирект, потом управление подхватывает апач и показывает страницу, но при перенаправлении теряются исходные данные массива $_SERVER. Может кто подскажет как решить эту проблему?
Ответ написан
torf
@torf
del.проблему решили без меня
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы