Укрощение строптивых или как исправить ошибки RSS
RSS сегодня используется повсеместно, и не только для получения свежих новостей, но и как канал, по которому можно транслировать свои собственные новости автоматом в другие блоги и сообщества, в социальные сети, на Subscribe, создавая, таким образом, мощный эффект присутствия.
О том, как прожечь свой RSS через FeedBurner не писал только ленивый (я, то есть). Я и сейчас не буду – информации по этой теме – море, и любой желающий всегда найдет сотни описаний и выберет по своему вкусу и пониманию.
Однако в последнее время мне частенько пишут с жалобами на ошибки RSS: невозможно прожечь фид, feedburner не может идентифицировать источник фида, возникают какие-то ошибки в RSS и как исправить ошибки RSS фидов и т.д.
Да, к сожалению, иной раз в этих каналах встречаются ошибки, из-за которых FeedBurner категорически отказывается признавать RSS за что-то удобоваримое. Дело в том, что RSS — это, прежде всего, XML . Из описания видно, что XML-документы изначально должны быть безупречны. В отличие от HTML, DOM анализатор обязан отказаться от разбора XML документа, если в документе есть ошибки. Поэтому проверять свой RSS на валидность просто необходимо. Существуют множество инструментов для проверки RSS-каналов, например — http://feedvalidator.org/, http://validator.w3.org/feed/
Но это все скучная теория, а прожигать фиды нужно не когда-то в отдаленном светлом будущем, когда все будут знать, что такое XML и писать его код корректно, а уже сегодня. Поэтому, засучив рукава, мы укротим строптивые фиды. Шаг за шагом, от простого к более сложному.
Шаг первый – удаление пустых строк
Плагин Fix RSS Feed для WordPress, который помогает исправить ошибки RSS фидов такие, как: “Error on line 2: The processing instruction target matching “[хХ][мМ][LL]” is not allowed.” когда вы пытаетесь прожечь свой RSS Feed через FeedBurner, или ошибка “XML or text declaration not at start of entity” которая появляется в браузере FireFox, или ошибка, которая возникает в браузере Opera “XML declaration not at beginning of document” и т.д.
Установка и активация этого плагина стандартна
Инструкция. Как исправить ошибки RSS с помощью плагинов?
Плагин Fix RSS Feed работает автоматически буквально по нажатию клавиши.
1. Откройте консоль админа WordPress2.
2. Выберите Параметры ->Исправить RSS Feed
3. Отметьте «проверить папки WordPress и удалить ошибки»
4. Нажмите кнопку «исправить RSS Feed».
5. Плагин проверит во всех папках (кроме wp-admin) PHP файлы на предмет пустых строк в заголовке и в конце файла. Все обнаруженные пустые строки будут удалены. На коде это не отразится, т.ч. не переживайте
6. По окончанию работы плагин покажет вам результат. В том случае, если некоторые ваши документы, содержащие код, помечены только для чтения, он сообщит об ошибке. В этом случае вы можете изменить разрешение файла, дав добро на запись и повторно сканировать его содержание, нажав все ту же кнопку «исправить RSS Feed».
7. По окончанию, попробуйте скормить вашу ленту FeedBurner’у. Если проблема была в пустых строках – он ее с удовольствием съест прожжет
Скачать Fix RSS Feed плагин для WordPress
Если фокус не удался, т.е. пустых строк нет или они ликвидированы, но ленту все равно не принимают, переходим к шагу второму
Шаг второй – проверка и удаление BOM (п>ї)
Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого в кодировке UTF-8. Поскольку любимый WordPress живет именно в этой кодировке, не часто, но в структуру его файлов эти символы попадают. Причем, они могут попадать не обязательно в файлы фидов, даже если они затесались в файлик какого-то плагина, RSS уже может показаться FeedBurner’у верхом непристойности.
Естественно, искать и бить их вручную мухобойкой не получится – нужно знать, куда целиться, да и много у вордпресса файлов. Смотреть их все просто лениво. Но есть еще на свете добрые люди. Один из них, по имени Антон, написал утилитку utf8-bom-remover для поиска и удаления BOM локально, еще до заливки файлов на сервер.
А здесь он показал, как эта его утилитка выглядит в работе http://anton-pribora.ru/projects/recoder/
Проделав эту нехитрую операцию, идем с хлебом-солью нашим фидом к FeedBurner’у: Откушайте, мол, господин хороший, мы от чистого сердца, чистыми руками и с чистой совестью…
Смотрим результат. Если проблема была с BOM, нам повезло. Если нет, придется принимать более жесткие меры
Шаг третий – жесткие меры
Заходим через FTP менеджер в директорию (папку) wp-includes, и открываем в любом редакторе, который корректно работает с кодировкой UTF-8 без BOM (например Notepad++), файлы: «feed-rss.php», «feed-rss2.php», «feed-rss2-comments.php», «feed-atom.php», «feed-rdf.php».
В начале каждого из них находим строчку: <?php echo ‘<?xml version=»1.0″ encoding=»‘.get_option (‘blog_charset’).'»?’.’>’; ?>, и удаляем ее.
Обратите внимание: если эта строка начинается не с <?php echo , а просто echo заключительный ?> удалять не нужно
Сохраняем файлы. И (сюрприз!) опять идем жечь наш фид. Смотрим результат. Чаще всего срабатывает, но бывают и исключения. Тогда шаг последний
Шаг последний – крайние меры
Опять заходим в директорию wp-includes и редактируем файлы feed-rss2.php и feed-rss2-comments.php. В файле убираем первые 13-14 строк вплоть до
<rss version=»2.0″
xmlns:content=»http://purl.org/rss/1.0/modules/content/»
При прожиге на FeedBurner из вариантов выбираем RSS2 (вообще-то, он стоит по умолчанию).
Вуаля! Теперь все работает!
Ну, а если и теперь не работает и FeedBurner по-прежнему обнаруживает ошибки RSS, то просто переустановите движок и прожгите фид ДО того, как навешаете на блог любимые плагины.
I had set up two WordPress development sites, URL’s were something like mysite.com/dev/blog1 and mysite.com/dev/blog2. blog2 would fetch posts from categories on blog1 using fetch_feed() e.g. fetch_feed(mysite.com/dev/blog1/category/fun/feed) and everything worked fine.
However, since moving the sites over to mysite.com/blog1 and mysite.com/blog2, the feed does not work. I get the following error:
A feed could not be found at mysite.com/blog1/category/fun/feed. A feed with an invalid mime type may fall victim to this error, or SimplePie was unable to auto-discover it.. Use force_feed() if you are certain this URL is a real feed.» } } [«error_data»]=> array(0) { } }
When I go to the feed URL though, the feed does exist.
Any ideas?
asked Mar 12, 2014 at 9:41
badcoderbadcoder
3,5845 gold badges32 silver badges33 bronze badges
The fetch_feed()
function is still trying to look at the dev. Highlighted below:
«A feed could not be found at mysite.com/dev/blog1/category/fun/feed
. A feed with an invalid mime type may fall vic…..»
You will need to remove the dev
part from the url.
answered Mar 12, 2014 at 9:53
StewartsideStewartside
20.2k12 gold badges59 silver badges80 bronze badges
3
Had the same problem. I’ve tried different WordPress RSS plugins and got the same result: «RSS Error: A feed could not be found at …»
(For almost all RSS feeds except for feeds from feedburner!)
I contacted our provider / web hosting service, they «unlocked» the domain of the rss feed within a minute and now it works perfectly!
If you’re using a webhoster, maybe you need to contact their support for help.
answered Mar 13, 2014 at 15:30
The bug is with the feeds. They’re not served correctly, as indicated by the error message.
HTTP/1.1 200 OK
Connection: keep-alive
Server: nginx
Set-Cookie: client_id=B92CE32F9E8CB8612A565EEA9F0DA31723F2050F0C523910EECC061863AE0AD3; domain=.bandcamp.com; path=/; expires=Sat, 05 Jul 2031 19:44:30 -0000; secure; HttpOnly; SameSite=None
Referrer-Policy: no-referrer-when-downgrade
Content-Security-Policy: base-uri 'none'; object-src 'none'; report-uri https://bandcamp.com/api/cspreport/1/violation; script-src http: https: 'nonce-eoIbgbG1RdYa/RTACusqNQ==' 'report-sample' 'strict-dynamic' 'unsafe-eval' 'unsafe-inline'
Set-Cookie: BACKENDID=red-78b9-10; path=/; Secure
Accept-Ranges: bytes
Date: Mon, 05 Jul 2021 19:44:30 GMT
Via: 1.1 varnish
X-Served-By: cache-ams21063-AMS
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1625514270.071733,VS0,VE350
transfer-encoding: chunked
By comparison, how it should be (content-type: application/rss+xml
):
[…]
content-type: application/rss+xml; charset=UTF-8
But as the error message also indicates, you can force a bad feed by adding #force_feed
to the URL.
Привет!
Читаю Хабр через rss (inoreader). Вчера лента перестала работать. Вот ошибка: A feed could not be found at habrahabr.ru/rss/new/. This does not appear to be a valid RSS or Atom feed.
Скрин с ошибкой: prntscr.com/4h81ae
Подскажите, пожалуйста, на что исправить адрес подписки.
Заранее спасибо!
-
Вопрос заданболее трёх лет назад
-
2860 просмотров
Скорее всего они убили общий фид new.
Ну или просто что то сломалось.
В первом случае смириться, во втором писать в поддержку.
Ну или сделайте себе персональный habrahabr.ru/info/help/lenta , оно работает.
Пригласить эксперта
-
Показать ещё
Загружается…
13 июн. 2023, в 17:21
18000 руб./за проект
13 июн. 2023, в 17:10
3000 руб./за проект
13 июн. 2023, в 17:07
10000 руб./за проект
Минуточку внимания
FeedWordPress doesn’t work very well with YouTube feeds. The RSS feed clearly exists when I visit the link via web browser, but FeedWordPress can’t find it.
YouTube feeds work just fine with other syndication scripts, so I imagine there must be some kind of solution for this.
If you don’t have a specific answer, I would appreciate a point in the right direction.
Any thoughts.
http://wordpress.org/extend/plugins/feedwordpress/
- rss
- youtube
- feed
asked Jun 30, 2012 at 19:54
RichardRichard
1671 gold badge1 silver badge8 bronze badges
1 Answer
answered Jul 5, 2014 at 11:36