
나는 nginx 프록시 및 재작성 기능에 대한 모든 훌륭한 게시물을 연구했지만 내 문제에 대한 해결책을 찾을 수 없었습니다. 그래서 여기 있습니다. 나는 다음 요청을 처리할 수 있는 vaadin을 사용하여 웹 애플리케이션을 작성했습니다.
http://<server>/#main/search?country=germany&type=songwriter
SEO 최적화를 위해 http:///songwriter/germany와 같은 "말하는" URL을 처리하고 싶습니다. 그래서 웹 서버 내에서 URL을 다시 작성하는 것이 해결책이라고 생각했습니다. 하지만 아무리 노력해도 요청에 해시태그를 넣을 수 없고 최종 해결책을 찾을 수 없습니다! 내가 시도한 것은 다음과 같습니다.
location /songwriter/ {
proxy_set_header Host $host;
proxy_redirect off;
# Option 1 - hastag is encoded
rewrite ^/songwriter/(.+) /#main/suche?land=$1 break;
proxy_pass http://127.0.0.1:8080;
}
내가 추적한 내용은 다음과 같습니다: /%23main/suche land=berlin/. 어떤 아이디어?
답변1
URL 조각은 클라이언트측에만 해당되며 서버로 전송되지 않습니다. (여기에서는 리터럴이 #
허용되지 않기 때문에 nginx URL이 이를 인코딩합니다.) 웹 앱이 탐색을 위해 URL 조각을 남용하는 경우 클라이언트 측(브라우저에서) 코드로만 처리할 수 있습니다. 이런 방식으로 URL 조각을 사용하는 것은 좋은 습관으로 간주되지 않습니다. 이를 제거하려면 웹 애플리케이션을 대폭 다시 작성해야 할 수도 있습니다.