Я пытаюсь настроить свой сервер nginx так, чтобы любой файл php был доступен без указания его расширения.
Я уже знаю много подобных вопросов / ответов вроде https://stackoverflow.com/questions/7760883/nginx-setting-a-default-file-extension/7761779#7761779 https://stackoverflow.com/questions/7760883/nginx-setting-a-default-file-extension и https://stackoverflow.com/questions/19975218/remove-php-from-url-with-rewrite-rule но я хочу пойти немного дальше:
Если запрос содержит файл .php, мы вернем 404.
Так, например, скажем, у меня в папке:
Мне нужно получить к ним доступ, используя
и если пользователь попробует /search.php, он получит 404 в ответ.
Последняя часть для меня непростая. Более того, когда я обращаюсь к файлам без расширения PHP, NGinx загружает файл для меня, не компилируя его (так что у меня есть доступ к источнику кода, содержащему доступ к базе данных: /)
Как я могу сделать ?
Вот моя фактическая конфигурация:
server {
listen 80 default_server;
root /srv/www/status/;
index index.php;
access_log /var/log/nginx/default-access_log;
error_log /var/log/nginx/default-error_log;
location / {
try_files $uri $uri.php =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass php5-fpm-sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
Спасибо за помощь! :)