Nginx

Nginx:使用 proxy_pass 和 URL 參數和特殊字元重寫 URL

  • August 27, 2021

我研究了所有關於 nginx 代理和重寫功能的精彩文章,但無法找到解決我的問題的方法。所以我們在這裡。我用 vaadin 編寫了一個 Web 應用程序,它能夠處理以下請求:

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 片段只是客戶端,永遠不會發送到伺服器。(因為那裡不允許使用文字#,所以 nginx URL 對其進行編碼。)如果您的 Web 應用程序濫用 URL 片段進行導航,那麼它們只能由您的客戶端(在瀏覽器中)程式碼處理。請注意,以這種方式使用 URL 片段不被認為是好的做法。您可能必須大幅重寫您的 Web 應用程序才能擺脫它們。

引用自:https://serverfault.com/questions/1075817