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

Nginx не разбирает php при использовании try_files

Я в основном пытаюсь реализовать поведение Apache MultiViews, чтобы мои URL-адреса не требовали расширения .php.

Насколько я могу судить из других вопросов, на которые я ответил здесь, о сбое сервера, я должен решить эту проблему, но что-то явно не так в моей конфигурации nginx.

Поведение почти правильное;

Однако, если я перейду к /path/to/function в try_files директива правильно совпадает с function.php но загружает его как статический файл.

Вот конфигурационный файл:

server {
  listen   80;
  server_name  app;
  root   /path/to/app;
  index  index.php index.html index.htm;

  access_log  /var/log/nginx/access.log;

  location / {
    allow all;
    try_files $uri $uri/ $uri.php =404;
  }

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass  unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
  }

  location ~ /\.ht {
    deny all;
  }
}

Похоже, я просто неправильно понял, как работает try_files; то =404 не требовался и приводил к тому, что nginx не анализировал файл как php после его сопоставления. Убрав его так, чтобы линия была просто try_files $uri $uri/ $uri.php; исправил проблему