如何在nginx中提供html文件,而不在此别名设置中显示扩展名

时间:2013-03-16 15:42:41

标签: html nginx alias

我在nginx中设置此别名时遇到了很多麻烦,无法正确显示我的网站。

我关注的网站应该可以从mywebsite.com/mr访问,与位于mywebsite.com/的网站不同。该网站位于/fullpath(为简单起见缩短)该网站需要提供三种内容:

  1. 索引文件位于/fullpath/index.html
  2. 其他html文件(未在浏览器中显示.html扩展名)。
  3. 位于/fullpath和子目录中的静态资产(js / css / img)。
  4. 我已尝试更改try_files中的匹配顺序,并发现它们都有效的情况,而不是同时发生:

    location /mr {
      default_type "text/html";
      alias /fullpath;
    
      # with this one 1 and 3 work
      # try_files $uri/index.html $uri.html $uri; 
    
      # with this one 2 and 3 work
      # try_files $uri $uri.html $uri/index.html;
    
      # with this one 1 and 2 work
      try_files $uri.html $uri/index.html $uri;
    }
    

    当一个人不工作时404。有谁知道我如何正确地提供各种文件?

1 个答案:

答案 0 :(得分:25)

显然是别名和try_files don't work together。但是,我认为你不需要使用别名。

location /mr {
  default_type "text/html";
  try_files  /fullpath/$uri /fullpath/$uri.html /fullpath/$uri/index.html  /fullpath/index.html;
}

哪会尝试:

  • 确切文件。
  • 添加了.html的文件。
  • 路径中的索引。
  • 默认索引。

我认为root指令适用于try文件但无法测试。

server{
    location /mr {

        root /home/mysite/fullpath;

        default_type "text/html";
        try_files  $uri $uri.html $uri/index.html index.html;
    }
}