Привет всем! С сегодняшнего дня я начну ветку блога разработчиков joomplace.

Писать будем стараться много и о разном - от описания наилучших практик взаимодействия с нашими компонентами и до проблем джумлы и их решений.
Будем разбирать проблемы, чтобы понять, откуда она возникла, чтобы вы могли уловить, как узнать, откуда ноги растут. Для нетерпеливых и жаждущих увидеть конкретно решение буду ставить ссылку на концовку статьи, где собственно они и найдут то, за чем пришли.

 Начну я как раз с проблем джумлы, на повестке дня: почему сервис "feedvalidator.org" не принимает RSS с нашего сайта.

Feed validator error

Итак RSS. Благо на станице валидации сразу была указана ошибка: значение тэга SELF не соответствует непосредственно проверяемому URL.
Для проверки причин пришлось покопаться в ядре joomla, что помогло сделать вывод:
проблема встречается при включенном SEF, в частности при включенной опции "Add .html".

SEF breaks RSS

С пониманием того, как по этапам работает joomla sef, было ясно, что проблема возникает на этапе обработки сервером запроса, которая настраивается через .htaccess. 
Проблема заключалась в том, что при обработке запроса /blog.feed его изменяло на /blog.feed.html, а при этом страницу начинало обрабатвать в joomla как простую страницу(view.html.php), а не rss feed(view.feed.php).

По итогам проблема решается добавлением простого исключения:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule ^(.*)$ /$1.html [R,L]

превращается в 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_URI} !\.feed$
RewriteRule ^(.*)$ /$1.html [R,L]

 

Вот собственно и все, теперь наш RSS стал валидным, и мы можем делиться своими новостями со всеми желающими получать их через RSS.

Автор: Александр Косарев Категория: Разработка Опубликовано: 13 ноября 2015