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