Главная Новости

Как привести rss feed WordPress к потребному виду


Опубликовано: 01.09.2018

Все началось с тог что в 2016 году RSS стал мало востребован (хотя и не заслуженно), и как это обычно бывает в такое ситуации все пошло нет так… И если браузеры все еще приемлемо отображают RSS ленты, то агрегаторы уже отказываются работать с «современными» RSS.

Первое что пошло не так это штука похожая на баг или позор дало в том что когда-то давно с выходом версии 4.4 в ядро была добавлена поддержка адаптивных изображений, путем добавления атрибута srcset, но этот атрибут не поддерживается стандартом RSS и валидатор ругается.

Introduction to Amazon Web Services by Leo Zhadanovsky

Позор заключается в том кажется ещё до выхода релиза

Сергей Бирюков предложил патч решающий эту проблему, который в ядро не влили, это плохо..

Поэтому приходится исправлять ситуацию подручными средствами:

add_filter( 'max_srcset_image_width', function ( $size_array ){ return 1; },10,1 );

Вторая проблема связана с ещё одним новшеством наших дней я говорю о повсеместном SSL к которому все привыкли , но в местах где все ещё помнят RSS совершенно не принято думать что на сайте может быть SSL например на news.liveinternet.ru совершенно не предполагается что источник новостей может раздаваться по голому HTTP. Поэтому на сервере нужно иметь возможность отдавать контент разными способами, но опять же сегодня у нас есть stackoverflow где полно вот таких конфигов для nginx (например)

server { ... rewrite ^https://$server_name$request_uri? permanent; ... }

и вот если его использовать на своем сервере тот самый агрегатор лайвинтернета выдаст ошибку такт как при обращении к фиду редирект на c http на https и HTTP код отличный от 200, а сразу указать фид с http невозможно.

Поэтому я для себя решил эту проблему использованием специального HTTP заголовка Strict-Transport-Security, видя его современные браузеры немедленно понимают что сайт следует принимать по защищенному протоколу и запоминает такое поведение на время указанное в в параметре max-age, клиенты не умеющие работать с SSL и ничего не знающие о заголовке, работают как обычно но HTTP.

Конфиг nginx выглядит примерно так:

server { listen 80; listen 443 ssl; add_header Strict-Transport-Security "max-age=63072000; preload"; }

На этом все чините свой свои RSS, делайте веб совместимым.

rss