nginx で index.html 以外のファイルを追加するにはどうすればいいですか?

nginx で index.html 以外のファイルを追加するにはどうすればいいですか?

私はこの分野ではかなり初心者ですが、シンプルな Web ページ用に nginx サーバーを立ち上げて実行しています。設定は次のとおりsites-availableです。

server {
    listen 80 default_server;

    root /var/www/mywebsite/;
    index /html/index.html;

    server_name mywebsite.com www.mywebsite.com;

    location / {
            try_files $uri $uri/ =404;
    }
}

そして、私の index.html は次の構造に配置されています:

+------+   +----------+    
+ html +-->+index.html|    
+------+   +----------+    
       |      
       |   +--------------+
       +-->+scnd_page.html|
           +--------------+

アクセスすると がmywebsite.com表示されます。をポイントするにはindex.htmlどうすればいいでしょうか?mywebsite.com/scnd_page/send_page.html

私はいくつかのものを作ってみました

location /scnd_page { 
}

しかし、正しい方向に進んでいるかどうかはわかりません。このファイルでこれを行う必要があるのでしょうか?

答え1

使用できるrewrite外部リダイレクトを発行して、.htmlユーザーに表示されないようにし、try_files実際のファイルを提供する。

location / {
    rewrite     ^(/.*)\.html$   $1  redirect;
    try_files $uri $uri/index.html $uri.html =404;
}

/$ただし、を暗示するために末尾のスラッシュをサポートすることはお勧めしません\.html$。そのようなサポートのロジックは少し見苦しいですし、 内で相対 URL を使用しようとすると追加の問題も発生しますscnd_page.html

答え2

location ブロック内で index パラメータを設定するだけです。

location /html/scnd_page { index scnd_page.html; }

また、scnd_page.html をグローバルに「セカンダリ」インデックスとして定義することもできます。

server {

listen 80 default_server;

root /var/www/mywebsite/;
# carefull setting '/html/index.html'...
index index.html scnd_page.html;

server_name mywebsite.com www.mywebsite.com;

location / {
        try_files $uri $uri/ =404;
}

}

関連情報