如何在Nginx中将index.html设置为根文件?

如何为域名设置index.html,例如https://www.example.com/ – 将用户引导至根目录中的index.html。

我尝试了不同的东西,如:

server { # some configs location = / { index index.html; fastcgi_index index.html; } or location / { index index.html; fastcgi_index index.html; } } 

没有什么帮助我。

还有一些其他configuration与位置关键字,但我也评论他们。

其他“位置”configuration在server {子句:

 location ~ .*(css|htc|js|bmp|jp?g|gif|ico|cur|png|swf|htm?|html)$ { access_log off; root $www_root; } location ~ \.php$ { include /etc/nginx/fastcgi_params; index index.html; fastcgi_index index.html; fastcgi_param SCRIPT_FILENAME $www_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass 127.0.0.1:9000; # Директива определяет что ответы FastCGI-сервера с кодом больше или равные 400 # перенаправлять на обработку nginx'у с помощью директивы error_page fastcgi_intercept_errors on; break; } location ~ /\.ht { deny all; } 

他们都评论和不注,但没有任何帮助。

PS版本是在/etc/nginx/sites-enabled/domainname.com文件中制作的。

在你的位置块你可以做:

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

这会告诉ngingx先查找一个文件名,如果找不到这样的文件,它会尝试uri / index.html。 所以,如果https://www.example.com/的请求来了,它会先查找一个确切的文件匹配,然后找不到,然后检查index.html

location / {是最普通的位置( location { )。 它将匹配任何东西, AFAIU 。 我怀疑是否有location / { index index.html; } location / { index index.html; }因为你网站的每个子目录都有很多重复的内容。

用的方法

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

是不好的,正如上面的评论中提到的那样,因为它返回的index.html页面不应该存在于你的网站上(任何可能的$uri都会以此为结果)。 另外,正如上面的答案中所提到的,在try_files的最后一个参数中有一个内部重定向。

你的方法

 location = / { index index.html; 

也不好,因为index做内部重定向。 如果你想要的话,你应该能够在特定的location 。 创建例如

 location = /index.html { 

就像这里提出的那样。 但是,你会有一个工作链接http://example.org/index.html ,这可能是不希望的。 我使用的另一个变体是:

 root /www/my-root; # http://example.org # = means exact location location = / { try_files /index.html =404; } # disable http://example.org/index as a duplicate content location = /index { return 404; } # This is a general location. # (eg http://example.org/contacts <- contacts.html) location / { # use fastcgi or whatever you need here # return 404 if doesn't exist try_files $uri.html =404; } 

PS 调试 nginx非常简单(如果你的二进制允许的话)。 只要添加到server {块:

 error_log /var/log/nginx/debug.log debug; 

看到那里所有的内部重定向等

答案是将根目录放在位置指令中:

 root /srv/www/ducklington.org/public_html; 

根据文档以指定顺序检查文件的存在,并使用第一个找到的文件进行请求处理; 处理在当前上下文中执行。 根据root和alias指令从文件参数构建文件的路径。 可以通过在名称末尾指定斜线来检查目录的存在,例如“$ uri /”。 如果找不到任何文件,则将内部重定向到最后一个参数中指定的uri。 重要

内部重定向到最后一个参数中指定的uri。

所以在上一个参数中,如果前两个参数返回false,则应该添加页面或代码。

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