我在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 Debugger上测试链接(没有文章标题)会产生以下日志:
响应代码400
获取的网址example.com/news/123
Canonical 网址
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重定向或显示正确的结果吗?
答案 0 :(得分:0)
由于我在URL中使用阿拉伯字符,因此我需要对URL进行编码才能使其在Facebook和Twitter上正常工作。
FIX:
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' />