Просто изучаю основы NGINX. Я пытаюсь переписать некоторые чистые URL-адреса, чтобы они перенаправляли на файлы в подкаталоге, который на сервере называется views.
Нижеприведенная конфигурация выполняет это. Однако всякий раз, когда я возвращаюсь на страницу индекса, она возвращает ошибку 404.
Как вы увидите ниже, я определяю свой индекс как index.html. Я предполагал, что это гарантирует, что index.html будет рассматриваться как файл индекса. Однако, похоже, NGINX предпочитает использовать первый блок местоположения для определения индекса. Это имеет смысл, поскольку '/' — это индекс. Однако я пытаюсь использовать только этот первый блок местоположения для последующих страниц (т. е. nginx-practice.test/secondpage)
Вот файл конфигурации:
server {
listen 127.0.0.1:80;
server_name nginx-practice.test;
root /usr/robertguttersohn/Sites/nginx-practice/public;
index index.html;
location ~ /. {
root /user/Sites/nginx-practice/public/views;
try_files $uri @htmlext =404;
}
location @htmlext {
rewrite ^(.*)$ $1.html last;
}
access_log /usr/local/var/log/nginx/access.log;
error_log /usr/local/var/log/nginx/error.log;
}
Как заставить NGINX использовать index.html для страницы индекса, а затем использовать перезапись для всех последующих страниц?
решение1
Вы можете использовать location = / {}
файл index.html только для главной страницы, а затем использовать общий location / {}
блок для нацеливания на последующие страницы. Вот пример...
server {
listen 127.0.0.1:80;
server_name nginx-practice.test;
root /user/robertguttersohn/Sites/nginx-practice/public;
index index.html;
# To isolate home page
location = / { try_files /index.html =404; }
# To parse subsequent pages
location / {
root /user/robertguttersohn/Sites/nginx-practice/public/views;
try_files $uri @url.html =404;
}
access_log /usr/local/var/log/nginx/access.log;
error_log /usr/local/var/log/nginx/error.log;
}
Как видите, location @htmlext {}
блокировку тоже можно устранить.
В моем примере я использовал /user/robertguttersohn/Sites/nginx-practice/public
как корневой каталог и /user/robertguttersohn/Sites/nginx-practice/public/views
как подкаталог. Вы можете обновить его в соответствии со своей средой. Не забудьте перезапустить сервер Nginx после внесения любых изменений в конфигурацию.
Для получения более подробной информации о том, как работает местоположение, пожалуйста, оформите заказhttps://nginx.org/r/location.