Дополнительный фон (чтобы избежать проблемы XY): Я работаю над статическим сайтом, который будет содержать такие URL-адреса, как www.example.com/ksiÄ ¼ka/. Проблема с этими URL-адресами заключается в том, что когда вы делитесь ими / вставляете их в программу обмена мгновенными сообщениями и т. д., диакритические символы заменяются на %<шестнадцатеричный> и стать нечитаемым: 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/доступные сайты/mysite втянуть содержимое /home/myuser/mysite/_redirects. Таким образом, сервер будет читать файл, контролируемый обычным пользователем. Недостаток в том, что это даст обычному пользователю доступ ко всем параметрам конфигурации NGINX, а мне нужно только настроить редиректы.
Чтобы обойти это, я мог бы написать часть автоматизации, которая читает файл, загруженный пользователем, содержащий только информацию, необходимую для перенаправления. Что-то вроде _перенаправляет файл в Netlify. Но это кажется… неправильным. Слишком нестандартно.
Резюме:
- Статический сайт
- Требуется HTTP 302 или HTTP 307
- Частые обновления (ручное редактирование
/etc/nginx не осуществимо)
- Файлы загружены как непривилегированный системный пользователь
- Не давать этому пользователю слишком много власти над веб-сервером
Что было бы хорошим способом сделать это на NGINX?