У меня есть веб-сайт Angular 2
SPA
, и у меня возникла проблема с метатегами социальных сетей, показывающими содержимое тега домашней страницы meta
по умолчанию вместо загруженной страницы.Это не проблема с Google, так как их бот на самом деле запускает JS, но Facebook и Twitter не запускают JS, они просто скачивают страницу.
Для меня самый простой способ решить это - использовать опцию3 из этого комментария , в основном совпадают с этими user-agent
значениями заголовка: facebookexternalhit
, Facebot
, Twitterbot
, возможно даже LinkedInBot
и показывают им страницу с тегами meta
заполнены нужным материалом.
Таким образом, URL-адрес должен оставаться прежним, но маршрут должен продолжаться до страницы, такой как:
http://www.example.com/api/GetSocialMediaMetas?url=http://www.example.com/url-of-the-page-that-was-actually-requested
Это также должно происходить на Web.config
уровень, так что я думал, что rewrite rule
может справиться с этим, но мне трудно найти какую-либо ссылку, чтобы помочь мне заставить это работать, вот моя попытка на данный момент:
<rule name="Rewrite for Social Media" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{USER_AGENT}" pattern="facebookexternalhit,Facebot,Twitterbot" negate="false" />
</conditions>
<action type="Rewrite" url="/api/GetSocialMediaMetas?url={R:1}" />
</rule>
Использование PostMan
Я изменил заголовок user-agent
, но, очевидно, это не работает, или я бы не стал задавать этот вопрос, возможно, кто-то умнее меня в этом вопросе может увидеть, где я ошибся?