Назад | Перейти на главную страницу

Как добавить файл, отличный от 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 { 
}

Но я не уверен, что на правильном пути. Это вообще нужно делать с этим файлом?

Вы можете просто настроить параметр индекса внутри блока местоположения:

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

}

Вы могли бы использовать rewrite чтобы убедиться, что выполняются внешние перенаправления, чтобы .html никогда не будет виден пользователю, и try_files для обслуживания фактических файлов.

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

Я бы не рекомендовал поддерживать косую черту в конце /$ подразумевает \.html$, хотя; логика такой поддержки была бы немного уродливой, плюс это также вызовет дополнительные проблемы, если вы попытаетесь использовать относительные URL-адреса в указанном scnd_page.html.