Структура URL, приводящая к тому, что PHP file_get_contents () возвращает неполную страницу - PullRequest
0 голосов
/ 16 августа 2010

Я немного разбираюсь с PHP и получаю странные результаты для определенного домена.Например, когда я загружаю эту страницу:

http://pitchfork.com/reviews/tracks/

Работает нормально.Однако, если я пытаюсь загрузить эту страницу:

http://pitchfork.com/reviews/tracks/1/

Она возвращает неполную страницу, даже если ее содержимое точно такое же.Все последующие страницы (дорожки / 2 /, дорожки / 3 / и т. Д.) Также возвращают неполные данные.

Кажется, проблема в способе формирования URL-адресов во время разбивки на страницы.Большинство других разделов сайта демонстрируют такое же поведение (целевая страница работает, но не последующие страницы).Единственным исключением является этот раздел:

http://pitchfork.com/forkcast/

Где forkcast / 2 / etc работает нормально.Это может быть связано с тем, что он имеет только один каталог, а большинство других разделов имеют несколько каталогов.

Мне кажется, что я понимаю, ЧТО вызывает проблему, но не ПОЧЕМУ или КАК это можно исправить.

Есть идеи?

Я пытался использовать file_get_contents () и cURL, и оба дают одинаковый результат.

Интересно, что на всех страницах, которые не работают, неполныестраница длиной около 16 000 символов.Это подсказка?

Я создал тестовую страницу, где вы можете увидеть разницу:

http://fingerfy.com/test.php?url=http://pitchfork.com/reviews/tracks/

http://fingerfy.com/test.php?url=http://pitchfork.com/reviews/tracks/1/

Он печатаетstrlen () и содержимое загруженной страницы (плюс она превращает относительные URL в абсолютные, что делает CSS правильным).

Любые подсказки были бы хорошими!

UPDATE: Mowser, который оптимизируетстраницы для мобильных устройств не имеют проблем с этими страницами (http://mowser.com/web/pitchfork.com/reviews/tracks/2/), поэтому должен быть способ сделать это без сбоев ....

1 Ответ

0 голосов
/ 16 августа 2010

Похоже, вилы управляют CMS с "человеческими" URL. Это означало бы, что / review / track будет отображать «домашнюю страницу» с несколькими сообщениями в списке, но «/ reviews / track / 1» будет отображать только «обзор №1» Возможно, они настроили CMS на вывод только выдержки фиксированной длины или неправильно настроили выходной фильтр и рано отрубили отдельные страницы сообщений.

Я пробовал извлекать / track / 1 до / track / 6, используя wget, и все они имеют разное содержимое, которое заканчивается точно в 16 097 байт, обычно в середине тега. Так что вряд ли это что-то, что вы можете исправить с вашей стороны, так как сам сайт отправляет неверные данные.

...