Redirecionamentos temporários (302, 307) em um site estático, atualizados com frequência

Redirecionamentos temporários (302, 307) em um site estático, atualizados com frequência

Plano de fundo opcional (para evitar o problema XY):Estou trabalhando em um site estático que conterá URLs como www.example.com/książka/. O problema com esses URLs é que quando você os compartilha/cola em um programa de mensagens instantâneas, etc., os caracteres diacríticos são expandidos %<hex>e se tornam ilegíveis: www.example.com/ksi%C4%85%C5%BCka/. Então estou considerando o seguinte:

  • definindo o URL canônico da página como www.example.com/ksiazka/("ąż" substituído por "az")
  • retornando um redirecionamento temporário (HTTP 302 ou 307) para www.example.com/książka/.

O que não vai funcionar:

Reescrita automática de endereço. Motivo: não estamos indo de "ąż" para "az", mas de "az" para "ąż" ou talvez "ąz", ou "aż", ou "áz", ou uma das muitas outras possibilidades. Os redirecionamentos devem ser gerados durante a geração da página, quando conhecemos a lista completa das páginas existentes, e assim sabemos que "ksiazka" deve redirecionar para "książka" e não para "książką".

Preciso configurar 1 redirecionamento HTTP por página. Precisarei de um novo redirecionamento HTTP sempre que enviar um novo artigo.

A edição da configuração do NGINX requer acesso root e estou implantando o site com permissões de usuário regulares. No Apache, você pode adicionar algumas diretivas .htaccess, mas isso é problemático para o desempenho e é proibido para o NGINX.

Exceto isso, eu poderia criar um include /etc/nginx/sites-available/mysitepara extrair o conteúdo de /home/myuser/mysite/_redirects. Assim, o servidor leria um arquivo controlado por um usuário comum. A desvantagem é que isso daria ao usuário normal acesso a todas as opções de configuração do NGINX, enquanto eu só preciso configurar redirecionamentos.

Para contornar isso, talvez eu pudesse escrever uma automação que leia um arquivo enviado pelo usuário, contendo apenas as informações necessárias para redirecionamentos. Algo parecido com o _redirectsarquivo no Netlify. Mas isso parece... errado. Personalizado demais.

Para recapitular:

  • Site estático
  • HTTP 302 ou HTTP 307 necessário
  • Atualizações frequentes (edição manual ou /etc/nginxnão viável)
  • Arquivos carregados como um usuário do sistema sem privilégios
  • Não dar ao usuário muito poder sobre o servidor web

Qual seria uma boa maneira de fazer isso no NGINX?

informação relacionada