如何使开放图形链接与301重定向一起使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使开放图形链接与301重定向一起使用相关的知识,希望对你有一定的参考价值。

我在VB.NET应用程序上使用友好的URL,我在社交媒体上分享URL,图像预览工作正常。链接可以共享如下:

example.com/news/123

要么

example.com/news/123/hello-this-is-an-article

为避免共享同一篇文章的两个版本的URL,我在301 redirect上创建了一个Pre_load,将第一个链接重定向到第二个相应的链接。这样,我确保每个访问过的URL都包含最后的文章标题。

在我应用此逻辑之后,最后没有文章标题的URL(第一个URL)不再显示社交媒体上的图像预览。 Twitter卡验证器和Facebook开放图调试器说有一个301重定向,没有找到元标签。

以下是在Pre_Load页面上运行的代码:

'Comparing URL title with the actual Article title

If strURLTitle <> strArticleTitle Then 
'URL article title either changed or does not exist

    Response.Status = "301 Moved Permanently"
    Response.AddHeader("Location", "example.com/news/{ID-in-the-URL}/article-title")

End If

这是我使用的示例html

<meta name='author' content='test' />
<meta name='keywords' content='test,test,test' />
<meta name='description' content='test test test' />
<meta itemprop='name' content='test' />
<meta itemprop='description' content='test' />
<meta itemprop='image' content='https://example.com/img.jpg' />
<meta property='og:title' content='test' />
<meta property='og:description' content='test test test' />
<meta property='og:image' content='https://example.com/img.jpg'' />
<meta property='og:image:secure_url' content='https://example.com/img.jpg'' />
<meta property='og:image:width' content='780' />
<meta property='og:image:height' content='439' />
<meta property='og:site_name' content='test' />
<meta property='og:url' content='https://example.com/news/3710/here-is-the-title' />
<meta property='og:type' content='article' />
<meta property='og:locale' content='ar_AR' />
<meta name='twitter:card' content='summary' />
<meta name='twitter:site' content='https://example.com' />
<meta name='twitter:title' content='test' />
<meta name='twitter:description' content='test test test' />
<meta name='twitter:image' content='https://example.com/img.jpg' />
<base href='https://example.com' />

问题:

在Twitter Card Validator上测试链接(没有文章标题)会产生以下日志:

信息:页面已成功获取 警告:未找到元标记 警告:此卡被重定向到 新闻/ 123 /你好,这 - 是 - 一 - 文章

在Facebook调试器上测试链接(没有文章标题)会产生以下日志:

响应代码400 获取URL example.com/news/123 规范URL example.com/news/123/hello-this-is-an-article 重定向路径 输入URL example.com/news/123 301 HTTP 重定向example.com/news/123/hello-this-is-an-article

有没有办法让开放图形调试器逃脱301重定向或显示正确的结果,即使我在最后共享一个没有标题的链接?

答案

由于我在URL中使用阿拉伯字符,因此我需要对URL进行编码以使其在Facebook和Twitter上运行。

固定:

Response.Status = "301 Moved Permanently"
Response.AddHeader("Location", "example.com/news/{ID-in-the-URL}/" & HttpUtility.UrlEncode(article-title))

<meta property='og:url' content='https://example.com/news/3710/encoded-url' />

以上是关于如何使开放图形链接与301重定向一起使用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile 301 重定向问题

301重定向没有片段[重复]

如何使Javascript文件301重定向?

如何将网站 301 永久重定向到另一个网站和永久链接的子类别(使用 .htaccess)

不使用301而是使用PHP脚本进行重定向,是吗?

如何以编程方式在 asp 页面中进行 301 重定向?