2013-12-20 2 views
1

Я пытаюсь создать страницу клиента 404 на php, которая захватывает и может регистрировать в базе данных запрашиваемую страницу. У меня есть это в моем файле .htaccess уже:Захват и регистрация неработающих ссылок на пользовательской странице 404

ErrorDocument 404 http://mywebsite.com/notfound.php

То, что я пытаюсь сделать, это добавить запрошенный URI в виде строки запроса в URL. Я попытался это:

ErrorDocument 404 http://mywebsite.com/notfound.php?url=% {REQUEST_URI}

но URL показывает буквальный текст, который я ставлю в выше. Поэтому я решил, что мне нужен какой-то флаг в конце, как [QSA] или что-то, но все попытки приводят к ошибке сервера 500.

Моя конечная цель - захватить попытку неработающей ссылки и ссылки на URL (который я может получить от $ _SERVER ['HTTP_REFERER']) на странице notfound.php и записать его в мою базу данных, где я могу вывести отчет обо всех ссылках, гиперссылках или вызываемых через AJAX, которые повреждены или отсутствуют. Я могу сделать все, кроме получения запрошенного URI фактической ссылки, которая вызвала ошибку 404.

ответ

1

Вы не должны использовать ErrorDocument 404 с http:// в цель, чтобы избежать полного редирект, как это:

ErrorDocument 404 /devsite/notfound.php 

Затем оригинал 404 URI будет доступен вам, как $_SERVER["REQUEST_URI"]

+0

Не уверен, что если я следую. .. Если я поставлю «ErrorDocument 404 /notfound.php» в файле .htaccess, я получаю 404 по этому запросу. Помещение «ErrorDocument 404 http://mywebsite.com/notfound.php» в .htaccess работает, но $ _SERVER ["REQUEST_URI"] = /mywebsite/notfound.php. В настоящее время я развиваюсь в localhost, не уверен, что это имеет значение или нет. Мой фактический оператор ErrorDocument: ErrorDocument 404 http: //localhost/devsite/notfound.php, который будет изменен на сервер, когда он появится в прямом эфире. – user3123746

+0

Вам необходимо указать полный путь от DocumentRoot. Поэтому вам нужно использовать: ** 'ErrorDocument 404 /devsite/notfound.php'** – anubhava

+0

aahhh, я знал, что это то, что я пропускал. Должен знать лучше (facepalm). Благодаря!! – user3123746

Смежные вопросы