Читающие Хабр через RSS наверняка замечали, что иногда один и тот же топик дублируется в ленте. Это происходит, когда пост перемещается из одного блога в другой. Меняется ссылка, и RSS-ридеры воспринимают её как новый топик. Это поведение легко исправить.
Уникальность поста в RSS определяется по тегу
Когда пост переносится в другой блог, меняется не только
Уникальность поста в RSS определяется по тегу
guid
. Он может содержать любую строку, однозначно идентифицирующую сообщение. Часто в качестве подобной строки используется постоянная ссылка на пост. В таком случае тегу guid
обычно ставят атрибут isPermalink="true"
, хотя его можно опустить, т. к. это значение по умолчанию. При этом использовать ссылку в качестве guid
совсем не обязательно, ведь для этого в стандарте RSS предусмотрен тег link
. В большинстве RSS-лент содержимое тегов guid
и link
дублируется:<guid isPermaLink="true">http://habrahabr.ru/blog/google/38273.html</guid> <link>http://habrahabr.ru/blog/google/38273.html</link>
Когда пост переносится в другой блог, меняется не только
link
, но и guid
, что сбивает с толку ридеров. Чтобы избежать этой ситуации, достаточно использовать в качестве guid
не ссылку, а действительно уникальную строку, которая не меняется ни при каких обстоятельствах. Лучше всего для этой цели подходит id
поста во внутренней базе данных. При этом необходимо выставить атрибут isPermaLink="false"
. В таком случае ридеры будут использовать guid
для определения уникальности поста, а link
— в качестве ссылки:<guid isPermaLink="false">1234567890</guid> <link>http://habrahabr.ru/blog/google/38273.html</link>