如何为域名设置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; }