我正在尝试设置一个 404 文件,该文件使用指令处理未知的 url 请求error_page
,我尝试将其根植于一个 .php 文件,该文件与路由位于同一目录中。
我无法弄清楚的问题是,一旦我创建 404 路由并定义位置,它似乎就会下载文件而不是提供它。为了测试我没有发疯,我在 404 规则之外放置了额外的 php 文件,它们运行并返回内容,但 404 规则文件只是下载
我的配置片段是
root /var/www/itn;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 1d;
}
error_page 404 /404.php;
location = /404.php{
root /var/www/itn;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/error/html;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
}
快速搜索解决方案建议,fastcgi_intercept_errors
但打开和关闭都不会改变帮助,还注意到如果我输入一个虚假的网址 www.site.com/somecraphere,它会转到一个无法访问的网站 ERR_INVALID_RESPONSE 所以我认为 404 规则正在起作用,它只是无法对文件做任何事情。
欢迎提出任何建议、改进和更正
答案1
事实证明我不是一个聪明人
不含试用文件location ~ \.php$
try_files $uri /404.php;
它不会执行 php,而是尝试以提供图像或文档的相同方式为其提供服务。