Nginx: перезапись URL с параметрами proxy_pass и URL и специальными символами

Я изучил все замечательные сообщения о прокси-сервере 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 /. Есть идеи?

0
задан 27 August 2021 в 16:31
1 ответ

Фрагмент URL-адреса предназначен только для клиентской стороны и никогда не отправляется на сервер. (Поскольку литерал # здесь не разрешен, URL-адрес nginx кодирует его.) Если ваше веб-приложение злоупотребляет фрагментами URL-адресов для навигации, они могут быть обработаны только вашим кодом на стороне клиента (в браузере). Обратите внимание, что использование фрагментов URL таким образом не считается хорошей практикой. Вероятно, вам придется значительно переписать веб-приложение, чтобы избавиться от них.

1
ответ дан 27 August 2021 в 16:35

Теги

Похожие вопросы