重写所有的.html扩展,并在Nginx中删除索引

如何从Nginx的urlstring中删除所有的.html扩展以及任何index.html的事件

http://www.mysite/index.htmlhttp://www.mysite http://www.mysite/articles/index.htmlhttp://www.mysite/articles http://www.mysite/contact.htmlhttp://www.mysite/contact http://www.mysite/foo/bar/index.htmlhttp://www.mysite/foo/bar

编辑:这是我的conf文件:

服务器{

  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; } 

}

作为一个重写(通过剥离的URL到文件系统/后端而不更改显示给客户端的URL):

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

或者你可以做一个301redirect(客户端发出新的请求):

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

接受的答案似乎不适合我。 我是一个开关的apache人,所以在任何情况下都不能100%工作,但是这似乎适用于我的网站(静态html页面,只是一个testing):

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

这是做到这一点:

  • 它正在访问的文件
  • domain.com/ => index.html
  • domain.com/somepage => somepage.html
  • domain.com/arandompage => 404.html

希望这会帮助其他困惑的前apache-ists。