我正在尝试配置我的 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。
比如说我的文件夹中有:
- 索引.php
- 搜索.php
- 历史.php
我需要使用
- index.php => / 或 /index
- search.php => /搜索
- history.php => /历史
如果用户尝试/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;
}
}
谢谢您的帮助! :)