我们正在生成一个只包含静态文件的网站(使用汇编 )。
在URL上使用.html扩展名看起来如此九十年代,所以我们在自己的目录中生成每个静态的HTML文件,并将其称为index.html。 例如,urlhttp://www.example.com/foo/bar/位于/var/www/foo/bar/index.html文件中。
这个效果很好,但有一个小东西唠叨我:现在有两个可能的URL到同一个资源:
偶然有人可能链接到URL的index.htmlforms,这是不利于search引擎优化,看起来丑陋(还记得九十年代?)。
是否有可能在Nginx的index.htmlurl404错误,但服务的斜杠url?
我试过这个:
location ~ /index\.html$ { return 404; }
但似乎Nginx在内部重写了index.html URL的斜杠URL,然后匹配这个位置,所以我们甚至在斜杠URL上也得到了一个404。
请注意,要发现错误,我们希望index.htmlurl是错误的 ,而不仅仅是redirect到斜杠url。
index.html有一个内部redirect,因为它是默认index ; /请求redirect到/index.html设置为返回404。
您可以检查ngx_http_index_module文档以获得更好的理解。 你的情况被logging在案。
解决您的问题的方法是将所有index.html重命名为foo.bar ,并将该文件名添加为默认index
location / { index foo.bar; }