我有一个没有服务器端渲染的单页应用程序。因此,每当有人在 Facebook 或 Twitter 上分享该网站的 URL 时,它都不会显示页面的动态标题。
我想将爬虫/机器人请求发送到提供带有 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;
}
这可行,但是 Angular 的 URL 在路由 URL 之前有 #,我需要在将请求发送到特殊后端之前将其删除。
那么,如何从 $request_uri 中删除哈希?
我尝试了几个重写示例,但它将请求发送到同一个域,我需要将请求发送到另一个服务器/域名。
答案1
哈希值#
和其后的内容不会发送到 HTTP 服务器,因此它们不是变量的一部分$request_uri
。
通过您的示例配置,您的后端收到的具体请求是什么?
我没有使用单页应用程序和 Google 的经验,但我认为向爬虫机器人和最终用户发送不同的内容不是一个好方法。