php - Nginx 不显示 404 页面,而是在根目录中提供索引文件

标签 php nginx ubuntu-server

我的 Nginx 服务器没有显示我的 404 页面。相反,每当尝试访问不存在的页面或目录时,它只会在我的 Web 文件夹的根目录中提供我的索引(.php)(没有相应的样式表)。

这是/etc/nginx/sites-available 下我自己的“默认”文件:

server {
listen 80;
listen [::]:80 ipv6only=on;
listen 443 ssl;
listen [::]:443 ipv6only=on ssl;

add_header Strict-Transport-Security max-age=15768000;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_prefer_server_ciphers on;

root /usr/share/nginx/html;
index index.html index.htm;

location / {
    index index.php;
}

if (!-e $request_filename) {
    rewrite ^.*$ /index.php last;
}

try_files $uri $uri/ =404;

error_page 403 404 405 /error/404.html;
error_page 500 501 502 503 504 /error/50x.html;

location ^~ /error/ {
    internal;
    root /usr/share/nginx/html;
}

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}
}

这无疑是因为我是新手并且经常摆弄它,所以这里也可能存在其他问题(关于这一点,关于如何 - 一旦其余问题得到解决 - 我可以强制 HTTPS 连接的提示会膨胀!)。感谢您的帮助和建设性意见,谢谢!

最佳答案

如果文件不存在,您将重写到 index.php,因此它永远不会进入您的 try_files 或错误页面...

if (!-e $request_filename) {
    rewrite ^.*$ /index.php last;
}

^ 应该被删除,除非你有特定的目的

关于php - Nginx 不显示 404 页面,而是在根目录中提供索引文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23323519/

相关文章:

php - 无法使用区 block 链钱包服务建立 session

php - 特定日期时间中的字母 - 如何解析

node.js - Ubuntu Node.js Express 服务器错误 "Cannot GET//test"

python - 为什么上传的图像权限取决于其大小?

mysql - 如何从存储库在 Ubuntu 12.04 服务器中安装 MySQL 5.1

ubuntu - ubuntu 服务器断开连接的时间

php 修剪功能不起作用

php - 为什么我的 SELECT 代码不起作用?

nginx - 如何将 nginx 与 Go 一起用于子域?

php - 如何找到我的 php-fpm.sock?