Я в основном пытаюсь реализовать поведение Apache MultiViews, чтобы мои URL-адреса не требовали расширения .php.
Насколько я могу судить из других вопросов, на которые я ответил здесь, о сбое сервера, я должен решить эту проблему, но что-то явно не так в моей конфигурации nginx.
Поведение почти правильное;
/path/to/app/
и файл index.php правильно проанализирован/path/to/app/function.php
и файл правильно проанализирован/path/to/app/media/some.jpg
и он используется как статический контент/path/that/doesnt/exist
Я получаю 404, как и ожидалОднако, если я перейду к /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;
исправил проблему