Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
624 views
in Technique[技术] by (71.8m points)

how to serve html files in nginx without showing the extension in this alias setup

I'm having a lot of trouble setting up this alias inside nginx to display my website correctly.

The website I'm concerned with should be accessible from mywebsite.com/mr and is different from the site located at mywebsite.com/. The website is located at /fullpath (shortened for simplicity) The site needs to serve three kinds of content:

  1. The index file located in /fullpath/index.html.
  2. Other html files (without showing the .html extension in the browser).
  3. Static assets (js/css/img) located in /fullpath and subdirectories.

I've tried changing around the order of matches in the try_files and found situations where they all worked, just not at the same time:

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;
}

When one doesn't work it 404's. Does anybody know how I can serve all kinds of files correctly?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Apparently alias and try_files don't work together. However, I don't think you need to use alias.

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

Which would try:

  • Exact file.
  • File with .html added.
  • Index in the path.
  • Default index.

I think the root directive does work with try files but am unable to test.

server{
    location /mr {

        root /home/mysite/fullpath;

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...