У меня есть Single Page Application без серверного рендеринга. Поэтому, когда кто-то делится URL-адресом с сайта на Facebook или Twitter, он не показывает динамический заголовок страницы.
Я хотел бы отправлять запросы краулера/бота на специальный бэкэнд, который обслуживает страницу с метатегами OpenGraph.
Фронтенд размещен на NGINX, и на данный момент у меня следующая конфигурация:
server {
listen 80;
listen [::]:80;
location / {
if ($http_user_agent ~* "linkedinbot|googlebot|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot|developers\.google\.com") {
return 307 https://renderer_service_domain$request_uri;
}
root /usr/share/nginx/html;
index index.html;
}
Это работает, но в URL-адресе Angular есть символ # перед URL-адресом маршрута, мне нужно удалить его перед отправкой запроса в специальный бэкэнд.
Итак, как мне удалить хеш из $request_uri?
Я попробовал несколько примеров перезаписи, но запрос отправляется на тот же домен, мне нужно отправить запрос на другой сервер/доменное имя.
решение1
Хэш #
и его содержимое не отправляются на HTTP-сервер, поэтому они не являются частью $request_uri
переменной.
Какой именно запрос получает ваш бэкэнд с учетом вашего примера конфигурации?
У меня нет опыта работы с одностраничными приложениями и Google, но я не думаю, что отправлять поисковым роботам и конечным пользователям разный контент — это хороший подход.