Tengo una aplicación de una sola página sin renderizado del lado del servidor. Entonces, cada vez que alguien comparte una URL del sitio en Facebook o Twitter, no muestra el título dinámico de la página.
Me gustaría enviar solicitudes de rastreador/bot a un backend especial que sirve una página con metaetiquetas OpenGraph.
El front-end está alojado en NGINX y hasta ahora tengo esta configuración:
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;
}
Esto funciona, pero la URL de Angular tiene el # antes de la URL de ruta, necesito eliminarlo antes de enviar la solicitud al backend especial.
Entonces, ¿cómo puedo eliminar el hash de $request_uri?
Intenté un par de ejemplos de reescritura, pero envía la solicitud al mismo dominio, necesito enviar la solicitud a otro servidor/nombre de dominio.
Respuesta1
El hash #
y el contenido posterior no se envían al servidor HTTP, por lo que no forman parte de la $request_uri
variable.
Con su configuración de ejemplo, ¿cuál es la solicitud exacta que recibe su backend?
No tengo experiencia con aplicaciones de una sola página ni con Google, pero no creo que sea un buen enfoque enviar contenido diferente a los robots rastreadores que a los usuarios finales.