Nginx:使用 proxy_pass 和 URL 參數以及特殊字元進行 URL 重寫

Nginx:使用 proxy_pass 和 URL 參數以及特殊字元進行 URL 重寫

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

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

對於 SEO 優化,我想處理「會說話」的網址,例如: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 片段僅在用戶端,永遠不會傳送到伺服器。 (因為#那裡不允許使用文字,所以 nginx URL 會對它進行編碼。)如果您的 Web 應用程式濫用 URL 片段進行導航,那麼它們只能由您的用戶端(在瀏覽器中)程式碼處理。請注意,以這種方式使用 URL 片段不被認為是好的做法。您可能需要大幅重寫您的 Web 應用程式才能擺脫它們。

相關內容