靜態網站上的暫時重定向(302、307),經常更新

靜態網站上的暫時重定向(302、307),經常更新

可選背景(以避免 XY 問題):我正在開發一個靜態網站,其中包含類似www.example.com/książka/.這些 URL 的問題在於,當您共用它們/貼上到 IM 程式等時,變音符號會擴展為%<hex>並變得不可讀:www.example.com/ksi%C4%85%C5%BCka/。所以我正在考慮以下幾點:

  • 將頁面的規範 URL 設定為www.example.com/ksiazka/(“ąż”替換為“az”)
  • 將暫時重定向(HTTP 302 或 307)返回www.example.com/książka/.

什麼不起作用:

自動地址重寫。原因:我們不是從“ąż”到“az”,而是從“az”到“ąż”,或者可能是“ąz”、“aż”、“áz”,或許多其他可能性之一。當我們知道現有頁面的完整清單時,必須在頁面產生期間產生重定向,因此我們知道「ksiazka」應該重定向到「książka」而不是「książką」。

我需要為每頁配置 1 個 HTTP 重定向。每次上傳新文章時,我都需要一個新的 HTTP 重新導向。

編輯 NGINX 配置需要 root 存取權限,並且我正在普通使用者的權限下部署該網站。在 Apache 下,您可以在 中加入一些指令.htaccess,但這會對效能產生問題,對於 NGINX 來說是不行的。

除此之外,我可以創建一個包含/etc/nginx/sites-available/mysite來提取/home/myuser/mysite/_redirects.因此伺服器將讀入由普通使用者控制的檔案。缺點是它會讓普通用戶存取所有 NGINX 配置選項,而我只需要設定重定向。

為了解決這個問題,我也許可以編寫一段自動化程式來讀取使用者上傳的文件,其中僅包含重定向所需的資訊。類似於_redirectsNetlify 中的文件。但這感覺……不對。太定制了。

回顧一下:

  • 靜態站點
  • 需要 HTTP 302 或 HTTP 307
  • 頻繁更新(手動編輯/etc/nginx不可行)
  • 以非特權系統使用者身分上傳的文件
  • 不給該用戶太多的網頁伺服器權力

在 NGINX 上執行此操作的好方法是什麼?

相關內容