如何设置index.html作为在Nginx的根文件?(How to set index.html

2019-06-27 01:28发布

如何设置的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;
    }

}

没有什么帮助了我。

还有一些其他的CONFIGS与位置关键字,但我想任何评论他们。

其他“位置” CONFIGS的在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文件进行。

Answer 1:

在你的位置块,你可以这样做:

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

它会告诉ngingx寻找与第一给出确切名称的文件,如果没有这样的文件被发现,它会尝试URI / index.html的。 所以,如果一个请求https://www.example.com/谈到它会寻找一个确切的文件匹配,再没有找到,将检查的index.html



Answer 2:

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. 
# (e.g. 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;

看看那里所有内部重定向等。



Answer 3:

答案是根目录放置的位置指令:

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


Answer 4:

根据文档检查按照指定的顺序文件的存在,并使用用于请求处理的第一找到的文件; 在当前的上下文中执行的处理。 到的文件的路径是从文件参数根据根和别名指令构成。 它可以通过在名称末尾指定一个斜线,以检查目录的存在,如“$ URI /”。 如果发现没有任何文件的,内部重定向到最后一个参数指定的URI而成。 重要

内部重定向到过去参数中指定的URI制成。

因此,在最后一个参数,你应该如果前两个参数返回false添加页面或代码。

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


Answer 5:

对我来说, try_files的指令(目前大多数投票)回答https://stackoverflow.com/a/11957896/608359导致重写周期,

*173 rewrite or internal redirection cycle while internally redirecting

我曾与指数指令更好的运气。 需要注意的是我的名字,这可能会或可能不是你想要的是以前使用的斜杠。

server {
  listen 443 ssl;
  server_name example.com;

  root /home/dclo/example;
  index /index.html;
  error_page 404 /index.html;

  # ... ssl configuration
}

在这种情况下,我想所有的路径导致/index.html,返回404时,包括。



文章来源: How to set index.html as root file in Nginx?