Как заставить ссылки на открытый граф работать с редиректами 301 - PullRequest
0 голосов
/ 12 января 2019

Я использую дружественные URL-адреса в приложении VB.NET, и я делился 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

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

Перенаправление Путь
Входной URL example.com/news/123 301 HTTP
Redirect example.com/news/123/hello-this-is-an-article

Можно ли как-нибудь разрешить отладчикам открытого графика избежать перенаправления 301 или отобразить правильные результаты, даже если я поделился ссылкой без заголовка в конце?

1 Ответ

0 голосов
/ 15 января 2019

Поскольку я использовал арабские символы в 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' />
...