映射到 php 文件的 Nginx URL?

映射到 php 文件的 Nginx URL?

我正在尝试配置我的 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-extensionhttps://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;
        }
}

谢谢您的帮助! :)

相关内容