Как добавить файл, отличный от index.html, в nginx?

Как добавить файл, отличный от index.html, в nginx?

Итак, я довольно новичок в этом деле, и у меня есть сервер 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 /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;
}

}

Связанный контент