![靜態網站上的暫時重定向(302、307),經常更新](https://rvso.com/image/770088/%E9%9D%9C%E6%85%8B%E7%B6%B2%E7%AB%99%E4%B8%8A%E7%9A%84%E6%9A%AB%E6%99%82%E9%87%8D%E5%AE%9A%E5%90%91%EF%BC%88302%E3%80%81307%EF%BC%89%EF%BC%8C%E7%B6%93%E5%B8%B8%E6%9B%B4%E6%96%B0.png)
可選背景(以避免 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 配置選項,而我只需要設定重定向。
為了解決這個問題,我也許可以編寫一段自動化程式來讀取使用者上傳的文件,其中僅包含重定向所需的資訊。類似於_redirects
Netlify 中的文件。但這感覺……不對。太定制了。
回顧一下:
- 靜態站點
- 需要 HTTP 302 或 HTTP 307
- 頻繁更新(手動編輯
/etc/nginx
不可行) - 以非特權系統使用者身分上傳的文件
- 不給該用戶太多的網頁伺服器權力
在 NGINX 上執行此操作的好方法是什麼?