我正在尝试创建一些自定义错误页面,但似乎无法让 500 工作。
我有以下配置:
server {
listen 80;
root /var/www/devsite;
index index.php;
server_name devsite;
error_page 403 = /error.php?code=403;
error_page 404 = /error.php?code=404;
error_page 500 = /error.php?code=500;
location / {
try_files $uri =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
一开始我以为可能是因为是PHP文件所以改了:
error_page 500 = /error.php?code=500;
到静态页面:
error_page 500 /500.html
但是当我破坏一些 PHP 代码来触发它时,它仍然只显示一个带有 500 响应代码的空白页面。
然后我试图让它成为里面的最后一条规则,location ~ \.php$
但同样的事情发生了。任何想法为什么自定义 500 页面不起作用?
我还注意到,如果您尝试访问具有 .php 扩展名的“拒绝访问”文件,它将不会显示自定义 403 页面,而是显示内置页面。有没有办法让规则也涵盖 .php 文件?