如何从Nginx的urlstring中删除所有的.html扩展以及任何index.html的事件
http://www.mysite/index.html到http://www.mysite http://www.mysite/articles/index.html到http://www.mysite/articles http://www.mysite/contact.html到http://www.mysite/contact http://www.mysite/foo/bar/index.html到http://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;
这是做到这一点:
希望这会帮助其他困惑的前apache-ists。