30

ウェブサイトを正しく表示するために nginx 内でこのエイリアスを設定するのに苦労しています。

問題の Web サイトは からアクセスできるはずですがmywebsite.com/mr、 にあるサイトとは異なりmywebsite.com/ます。この Web サイトは次の場所にあります/fullpath(簡単にするために短縮されています)。このサイトでは、次の 3 種類のコンテンツを提供する必要があります。

  1. にあるインデックス ファイル/fullpath/index.html
  2. その他の html ファイル (.htmlブラウザに拡張子を表示せずに)。
  3. と サブディレクトリにある静的アセット (js/css/img) /fullpath

で一致の順序を変更しようとし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 です。あらゆる種類のファイルを正しく提供する方法を知っている人はいますか?

4

2 に答える 2

46

どうやらaliasとtry_filesは一緒に機能しません。ただし、エイリアスを使用する必要はないと思います。

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;
    }
}
于 2013-03-17T01:34:35.683 に答える
13

@Danackが投稿したものの組み合わせを使用して、探していた結果に導きました(htmlファイルを直接提供します):

location /health-check {
    default_type "text/html";
    alias /path/to/my/file.html;
}
于 2015-05-11T15:04:19.587 に答える