@AlexanderY

Можно ли при запросе / отдать index.html, а при остальных запросах — передать обработку дальше?

Можно ли при запросе example.com отдать nginx'ом файл index.html, а при запросах example.com/anything-else передавать запрос на обработку php?

P.S. Из конфига удалены не относящиеся к делу директивы, вроде listen.

server {
  root /var/www/php/public; # Здесь находится index.php
  index index.php index.html index.htm index.nginx-debian.html;
  server_name localhost;
  
  location = / { # Здесь хочу отдать index.html
    root /var/www/static; # здесь физически находится index.html
    try_files $uri $uri/ /index.html?$query_string;
  }
  
  location / { # Здесь хочу обрабатывать остальные запросы, как обычно
    try_files $uri $uri/ /index.php?$query_string;
  }
}


При такой конфигурации, запрос любого url уходит в index.php
  • Вопрос задан
  • 467 просмотров
Решения вопроса 1
walch
@walch
В первом случае не нужно делать try_files $uri
Надо try_files /index.html

То есть конфиг должен выглядеть так:
server {
  root /var/www/php/public; # Здесь находится index.php
  index index.php index.html index.htm index.nginx-debian.html;
  server_name localhost;
  
  location = / { # Здесь хочу отдать index.html
    root /var/www/static; # здесь физически находится index.html
    try_files /index.html =404;
  }
  
  location / { # Здесь хочу обрабатывать остальные запросы, как обычно
    try_files $uri $uri/ /index.php?$query_string;
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
keydon2
@keydon2
...
А чем не устраивает замена
location = / { # Здесь хочу отдать index.html
на
location /index\.html$ {
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы