
オプションの背景(XY問題を回避するため):私は のような URL を含む静的サイトを作成中です
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ążką」ではなく「książka」にリダイレクトされる必要があることがわかっています。
ページごとに 1 つの HTTP リダイレクトを設定する必要があります。新しい記事をアップロードするたびに、新しい HTTP リダイレクトが 1 つ必要になります。
NGINX 構成を編集するにはルート アクセスが必要ですが、私は通常のユーザーの権限でサイトを展開しています。Apache では にいくつかのディレクティブを追加できます.htaccess
が、これはパフォーマンスに問題があり、NGINX では使えません。
それ以外では、 に include を作成して/etc/nginx/sites-available/mysite
のコンテンツを取り込むことができます/home/myuser/mysite/_redirects
。こうすることで、サーバーは通常のユーザーが制御するファイルを読み込むことになります。欠点は、リダイレクトを設定するだけで、通常のユーザーにすべての NGINX 構成オプションへのアクセス権が付与されることです。
これを回避するには、リダイレクトに必要な情報だけを含む、ユーザーがアップロードしたファイルを読み取る自動化機能を作成するとよいでしょう。Netlify_redirects
のファイルのようなものです。しかし、これは…間違っているように感じます。カスタムしすぎです。
要点をまとめると:
- 静的サイト
- HTTP 302 または HTTP 307 が必要です
- 頻繁な更新(手動編集は
/etc/nginx
不可能) - 権限のないシステムユーザーとしてアップロードされたファイル
- ユーザーにWebサーバーに対する権限を与えすぎない
NGINX でこれを行う良い方法は何でしょうか?