Nginx: перезапись URL с помощью proxy_pass и параметров URL, а также специальных символов

Nginx: перезапись URL с помощью proxy_pass и параметров URL, а также специальных символов

Я изучил все замечательные посты о nginx proxy и функциональности rewrite, но не смог найти решение для своей проблемы. Итак, вот мы. Я написал веб-приложение с vaadin, которое может обрабатывать следующий запрос:

http://<server>/#main/search?country=germany&type=songwriter

Для SEO-оптимизации я хочу обрабатывать "говорящие" URL-адреса, например: http:///songwriter/germany. Поэтому я подумал, что переписывание 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 используется только на стороне клиента и никогда не отправляется на сервер. (Поскольку литерал #там не допускается, URL nginx кодирует его.) Если ваше веб-приложение использует фрагменты URL для навигации, то они могут быть обработаны только кодом на стороне клиента (в браузере). Обратите внимание, что использование фрагментов URL таким образом не считается хорошей практикой. Вам, вероятно, придется значительно переписать свое веб-приложение, чтобы избавиться от них.

Связанный контент