如何在没有扩展名的情况下在 nginx 服务器上请求 html 页面?
即:example.com/about 应该返回 example.com/about.html。这对于所有 html 页面都应该是正确的。
我有一些类似的东西:
try_files $uri $uri.html;
index index.html;
哪个有效,但访问 example.com/ 会导致 403 Forbidden:
2015/01/20 19:26:11 [error] 32618#0: *373061 access forbidden by rule
访问不存在的页面(example.com/bla)会导致重定向循环:
2015/01/20 19:26:57 [error] 32620#0: *373065 rewrite or internal redirection cycle while internally redirecting to "/bla.html.html.html.html.html.html.html.html.html.html.html"
更新了完整的 nginx 配置:
server {
listen [::]:80;
server_name example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /var/www/example/;
try_files $uri $uri.html /index.html =404;
index index.html;
expires max;
autoindex off;
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
修改您的 try_files 行,如下所示:
您看到循环的原因是,如果在搜索期间未找到有效位置,try_files 将强制重定向到最后一个条目。
进一步阅读和参考:http ://wiki.nginx.org/HttpCoreModule#try_files
/index.html
为了避免在错误的 url 的情况下被重定向到而不是 404,设置try_file
如下: