是否可以使用 iis urlrewrite2 url 重写 rss xml 提要?
is it possible to url rewrite a rss xml feed using iis urlrewrite2?
我目前正在 url 重写我的旧 Web 应用程序,我想知道是否可以在 rss 提要中重写 links。
我目前有这个出站重写规则。问题是如果我在 filterbytags 中添加 link 什么也不会发生,因为据我所知 url 不是 href 属性。
<rule name="OutboundShowPost" preCondition="ResponseIsXml1">
<match filterByTags="Link" pattern="^(.*/)pages/frontend/forum/showpost\.aspx\?forum=([^=&]+)&(?:amp;)?post=([^=&]+)$" />
<action type="Rewrite" value="{R:1}forum/{R:2}/post/{R:3}" />
</rule>
我在 aspx 文件中生成的 xml 内容如下所示:
<rss version="2.0">
<channel>
<title>test title</title>
<link>https://example.com</link>
<description>test description</description>
<ttl>5</ttl>
<item>
<title>test title</title>
<description>test description</description>
<link>https://example.com/pages/frontend/forum/showpost.aspx?forum=other&post=&page=1#msg-17</link>
<pubDate>Tue, 26 May 2020 13:41:18 GMT</pubDate>
</item>
</channel>
</rss>
是否可以重写 link 标签之间的 url,或者我是否必须生成已经重写的 link?我想避免这种情况,因为这会使 url 重写变得支离破碎,我更愿意将其全部放在一个地方。
如果我像这样将 rss 提要 link 生成为 href,它就可以工作,但这违反了标准,尽管一些 rss 读者仍然接受我也希望避免这种情况。
<rss version="2.0">
<channel>
<title>test title</title>
<link>https://example.com</link>
<description>test description</description>
<ttl>5</ttl>
<item>
<title>test title</title>
<description>test description</description>
<link href="https://example.com/pages/frontend/forum/showpost.aspx?forum=other&post=&page=1#msg-17" />
<pubDate>Tue, 26 May 2020 13:41:18 GMT</pubDate>
</item>
</channel>
</rss>
阅读博客 post 后,关于使用 url 重写向 link 添加属性的黑客,我设法使用一些转义黑客来欺骗重写规则使其工作生成正确的 link.
使用规则:
<rule name="OutboundNewThreadsLink" preCondition="ResponseIsXml1">
<match filterByTags="CustomTags" customTags="XmlTags" pattern="^(.*/)pages/frontend/forum/showpost\.aspx\?forum=([^=&]+)&(?:amp;)?post=([^=&]+)&(?:amp;)?page=([^=&]+)$" />
<action type="Rewrite" value=""/><link>{R:1}forum/{R:2}/post/{R:3}/{R:4}</link><copyright href="" />
</rule>
<customTags>
<tags name="XmlTags">
<tag name="category" attribute="href" />
</tags>
</customTags>
将使此 rss xml:
<rss version="2.0">
<channel>
<title>test</title>
<link>https://localhost:44347</link>
<description>test</description>
<ttl>5</ttl>
<item>
<title>test</title>
<description>test</description>
<category href="https://localhost:44347/pages/frontend/forum/showpost.aspx?forum=andet&post=17-traade-forsvinder"/>
<pubDate>Tue, 26 May 2020 13:41:18 GMT</pubDate>
</item>
</channel>
</rss>
显示为:
<rss version="2.0">
<channel>
<title>test</title>
<link>https://localhost:44347</link>
<description>test</description>
<ttl>5</ttl>
<item>
<title>test</title>
<description>test</description>
<category href=""/>
<link>https://localhost:44347/forum/andet/post/17-traade-forsvinder</link>
<copyright href=""/>
<pubDate>Tue, 26 May 2020 13:41:18 GMT</pubDate>
</item>
</channel>
</rss>
显然类别和版权不包含 href 属性,但您可以将此与 <guid isPermaLink="false">
和 <source url="">
或任何其他包含属性值的标签一起使用,以创建 100% 有效RSS 提要。
虽然我没有继续沿着这条路走下去,而是选择预先重写提要 links。
这只是为了让任何人知道这确实可能,但是有点 hack,因为您需要创建 rss 提要以使用重写,并且如果提要上传到任何未启用重写的地方,这将导致无效的 rss 提要。
我目前正在 url 重写我的旧 Web 应用程序,我想知道是否可以在 rss 提要中重写 links。
我目前有这个出站重写规则。问题是如果我在 filterbytags 中添加 link 什么也不会发生,因为据我所知 url 不是 href 属性。
<rule name="OutboundShowPost" preCondition="ResponseIsXml1">
<match filterByTags="Link" pattern="^(.*/)pages/frontend/forum/showpost\.aspx\?forum=([^=&]+)&(?:amp;)?post=([^=&]+)$" />
<action type="Rewrite" value="{R:1}forum/{R:2}/post/{R:3}" />
</rule>
我在 aspx 文件中生成的 xml 内容如下所示:
<rss version="2.0">
<channel>
<title>test title</title>
<link>https://example.com</link>
<description>test description</description>
<ttl>5</ttl>
<item>
<title>test title</title>
<description>test description</description>
<link>https://example.com/pages/frontend/forum/showpost.aspx?forum=other&post=&page=1#msg-17</link>
<pubDate>Tue, 26 May 2020 13:41:18 GMT</pubDate>
</item>
</channel>
</rss>
是否可以重写 link 标签之间的 url,或者我是否必须生成已经重写的 link?我想避免这种情况,因为这会使 url 重写变得支离破碎,我更愿意将其全部放在一个地方。
如果我像这样将 rss 提要 link 生成为 href,它就可以工作,但这违反了标准,尽管一些 rss 读者仍然接受我也希望避免这种情况。
<rss version="2.0">
<channel>
<title>test title</title>
<link>https://example.com</link>
<description>test description</description>
<ttl>5</ttl>
<item>
<title>test title</title>
<description>test description</description>
<link href="https://example.com/pages/frontend/forum/showpost.aspx?forum=other&post=&page=1#msg-17" />
<pubDate>Tue, 26 May 2020 13:41:18 GMT</pubDate>
</item>
</channel>
</rss>
阅读博客 post 后,关于使用 url 重写向 link 添加属性的黑客,我设法使用一些转义黑客来欺骗重写规则使其工作生成正确的 link.
使用规则:
<rule name="OutboundNewThreadsLink" preCondition="ResponseIsXml1">
<match filterByTags="CustomTags" customTags="XmlTags" pattern="^(.*/)pages/frontend/forum/showpost\.aspx\?forum=([^=&]+)&(?:amp;)?post=([^=&]+)&(?:amp;)?page=([^=&]+)$" />
<action type="Rewrite" value=""/><link>{R:1}forum/{R:2}/post/{R:3}/{R:4}</link><copyright href="" />
</rule>
<customTags>
<tags name="XmlTags">
<tag name="category" attribute="href" />
</tags>
</customTags>
将使此 rss xml:
<rss version="2.0">
<channel>
<title>test</title>
<link>https://localhost:44347</link>
<description>test</description>
<ttl>5</ttl>
<item>
<title>test</title>
<description>test</description>
<category href="https://localhost:44347/pages/frontend/forum/showpost.aspx?forum=andet&post=17-traade-forsvinder"/>
<pubDate>Tue, 26 May 2020 13:41:18 GMT</pubDate>
</item>
</channel>
</rss>
显示为:
<rss version="2.0">
<channel>
<title>test</title>
<link>https://localhost:44347</link>
<description>test</description>
<ttl>5</ttl>
<item>
<title>test</title>
<description>test</description>
<category href=""/>
<link>https://localhost:44347/forum/andet/post/17-traade-forsvinder</link>
<copyright href=""/>
<pubDate>Tue, 26 May 2020 13:41:18 GMT</pubDate>
</item>
</channel>
</rss>
显然类别和版权不包含 href 属性,但您可以将此与 <guid isPermaLink="false">
和 <source url="">
或任何其他包含属性值的标签一起使用,以创建 100% 有效RSS 提要。
虽然我没有继续沿着这条路走下去,而是选择预先重写提要 links。
这只是为了让任何人知道这确实可能,但是有点 hack,因为您需要创建 rss 提要以使用重写,并且如果提要上传到任何未启用重写的地方,这将导致无效的 rss 提要。