Рейтинг:0

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

флаг mx

Дополнительный фон (чтобы избежать проблемы 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?

sippybear avatar
флаг ve
Этот ответ может быть полезен: https://serverfault.com/a/656097/337307
vidarlo avatar
флаг ar
Нормализовать URL в ASCII и избежать расширенных наборов символов, требующих кодирования URL?
флаг mx
Это вариант, но тогда у меня есть слова с ошибками (отсутствуют диакритические знаки) в адресной строке браузера, и адресная строка способна их отображать. Так что это упущенная возможность.
флаг mx
Хм, вопрос о массовых переадресациях выглядит многообещающе: https://stackoverflow.com/q/29354142

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.