“Ocultar” extensões de arquivo .html usando o nginx reescreve

16

Estou a disponibilizar um site estático através do nginx e o meu objectivo é substituir os URLs que se parecem com:

link

com

link

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.

    
por Doug Stephen 05.01.2012 / 17:55

2 respostas

17

try_files deve ser o que você quer.

Algo parecido com isto:

try_files $uri.html $uri $uri/ =404;
    
por 05.01.2012 / 18:04
5

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 .

    
por 11.10.2012 / 06:04

Tags