頻繁に更新される静的サイト上の一時的なリダイレクト(302、307)

頻繁に更新される静的サイト上の一時的なリダイレクト(302、307)

オプションの背景(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 でこれを行う良い方法は何でしょうか?

関連情報