try_files
deve ser o que você quer.
Algo parecido com isto:
try_files $uri.html $uri $uri/ =404;
Estou a disponibilizar um site estático através do nginx e o meu objectivo é substituir os URLs que se parecem com:
com
A chave não é nenhuma barra final. Atualmente, estou fazendo algo semelhante usando aliases de localização, mas isso é entediante porque exige um bloco de localização para cada arquivo e também acrescenta uma barra à direita, já que o nginx analisa os aliases como diretórios:
location / {
root /srv/www/foo/public_html;
index index.html;
}
location /bar1 {
alias /srv/www/foo/public_html/;
index bar1.html;
}
location /bar2 {
alias /srv/www/foo/public_html/;
index bar2.html;
}
E assim por diante. Eu li a documentação sobre reescritas, e não consigo sintetizar o que está sendo dito para o que eu preciso fazer. Eu não estou vindo de um fundo Apache; O nginx é a minha primeira incursão nos servidores da web, então estou certo de que estou perdendo alguma coisa óbvia, já que meu histórico de HTTP é fraco. Agradecemos antecipadamente por qualquer ajuda que você possa fornecer.
De acordo com o comentário do @Khaja, a melhor resposta é:
try_files $uri.html $uri/ =404;
Para que apenas uma cópia do recurso seja exibida (sem extensão .html). Você não quer dividir a força do seu link por vários URLs que veiculam conteúdo duplicado. Encontre a documentação aqui .