서버측 렌더링이 없는 단일 페이지 애플리케이션이 있습니다. 따라서 누군가가 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에 대한 경험은 없지만 최종 사용자와 크롤러 봇에 다른 콘텐츠를 보내는 것은 좋은 접근 방식이 아니라고 생각합니다.