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