Временные редиректы (302, 307) на статическом сайте, часто обновляются

Временные редиректы (302, 307) на статическом сайте, часто обновляются

Дополнительный фон (чтобы избежать проблемы XY):Я работаю над статическим сайтом, который будет содержать URL-адреса типа www.example.com/książka/. Проблема с этими URL-адресами в том, что когда вы делитесь ими / вставляете в программу обмена мгновенными сообщениями и т. д., диакритические символы расширяются %<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.

За исключением этого, я мог бы создать include /etc/nginx/sites-available/mysiteдля извлечения содержимого /home/myuser/mysite/_redirects. Таким образом, сервер считывал бы файл, контролируемый обычным пользователем. Недостаток в том, что это дало бы обычному пользователю доступ ко всем параметрам конфигурации NGINX, в то время как мне нужно только настроить перенаправления.

Чтобы обойти это, я мог бы написать часть автоматизации, которая считывает файл, загруженный пользователем, содержащий только информацию, необходимую для перенаправлений. Что-то вроде файла _redirectsв Netlify. Но это кажется... неправильным. Слишком нестандартным.

Подведем итоги:

  • Статический сайт
  • Требуется HTTP 302 или HTTP 307
  • Частые обновления (ручное редактирование /etc/nginxнецелесообразно)
  • Файлы загружены как непривилегированный системный пользователь
  • Не давать этому пользователю слишком много власти над веб-сервером

Как лучше всего это сделать на NGINX?

Связанный контент