%20em%20um%20site%20est%C3%A1tico%2C%20atualizados%20com%20frequ%C3%AAncia.png)
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/mysite
para 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 _redirects
arquivo 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/nginx
nã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?