reescrever todas as extensões .html e remover o índice no Nginx

1

Como removerei todas as extensões .html, bem como quaisquer ocorrências de index.html de uma string de URL no Nginx

http://www.mysite/index.html to http://www.mysite http://www.mysite/articles/index.html to http://www.mysite/articles http://www.mysite/contact.html to http://www.mysite/contact http://www.mysite/foo/bar/index.html to http://www.mysite/foo/bar

EDIT: Aqui está o meu arquivo conf:

servidor {

    listen 80;

    server_name staging.mysite.com;
    root /var/www/staging.mysite.com;
    index  index.html index.htm;

    access_log /var/log/nginx/staging.mysite.com.log spiegle;


    #error_page 404         /404.html;
    #error_page 500 503     /500.html;


    rewrite ^(.*/)index\.html$ $1;
    rewrite ^(/.+)\.html$ $1;

    rewrite ^(.*/)index\.html$ $scheme://$host$1 permanent;
    rewrite ^(/.+)\.html$ $scheme://$host$1 permanent;

    location / {
            rewrite ^/about-us /about permanent                                                                                      
            rewrite ^/contact-us /contact permanent;  

            try_files  $uri.html  $uri/ /index.html;
    }

}

    
por Pardoner 16.10.2012 / 22:21

2 respostas

-1

Como uma reescrita (passe uma URL removida para o sistema de arquivos / backend sem alterar o URL mostrado para o cliente):

rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;

Como alternativa , você pode fazer um redirecionamento 301 (o cliente faz uma nova solicitação):

rewrite ^(.*/)index\.html$ $scheme://$host$1 permanent;
rewrite ^(/.+)\.html$ $scheme://$host$1 permanent;
    
por 16.10.2012 / 23:14
1

A resposta aceita não parece funcionar para mim. Eu sou um cara apache que está fazendo a troca, então isso pode não funcionar 100% em todas as circunstâncias, mas isso pareceu funcionar no meu site (páginas estáticas em HTML, apenas um teste):

index index.html;
error_page 404 404.html;
rewrite ^(/.+)\.html$ $1;
try_files $uri.html $uri/ =404;

Isso está fazendo isso acontecer:

  • url = > arquivo está acessando
  • domain.com/ = > index.html
  • domain.com/somepage = > somepage.html
  • domain.com/arandompage = > 404.html

Espero que isso ajude outros ex-apache-ists confusos.

    
por 14.12.2013 / 19:04

Tags