2013-05-16 2 views
0

У меня есть сценарий, который захватывает контент с сторонних сайтов, и если URL-адрес не найден, перенаправление сайта с местоположением заголовка 302 на пользовательскую не найденную веб-страницу вместо отправки 404 не найдена , Сценарий также кэширует содержимое, возвращаемое curl_exec, но я не хочу кэшировать страницы ошибок, так есть ли способ зарегистрировать эти перенаправления, если я включил CURLOPT_FOLLOWLOCATION? Как я могу решить эту ситуацию? Я знаю, что могу просто найти сообщение об ошибке с помощью парсера dom, и если его просто отбросить, но я хочу знать, есть ли другие способы для этого.Логарифм зависания перенаправления с использованием CURLOPT_FOLLOWLOCATION установлен в true

ответ

0

Я в конечном итоге отключение followlocation, так что я просто должен поймать 302 кода и, если он присутствует, я не кэшировать страницу. Думал, что есть способ поймать все коды перед зависанием.

0

Посмотрите Easy way to test a URL for 404 in PHP?

Затем с помощью этого, просто не кэшировать страницу, если есть 404

+0

Возможно, вы не поняли, моя ошибка, но сайт третьей стороны не выбрасывает 404 вместо 302 на страницу с ошибкой. –

0

Смотрите здесь:

http://www.php.net/manual/en/function.curl-getinfo.php

Это обеспечивает такие данные. Эта функция встроена в этот класс:

http://semlabs.co.uk/journal/object-oriented-curl-class-with-multi-threading

+0

getinfo показывает только данные перенаправленного местоположения, поэтому я не хочу этого делать. Спасибо, в любом случае. –

+0

Я вижу. Думаю, вам нужно отключить FOLLOWLOCATION. Downlaod каждого URL-адреса, используйте get_info(), чтобы проверить, находится ли заголовок в диапазоне 3xx, если это так, зарегистрируйте URL-адрес, иначе если заголовок находится в диапазоне 2xx, у вас есть страница назначения, иначе произошла ошибка. –

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