我希望在我的服务器上托管的各个网站中设置相同的错误页面。换句话说,每个server
块都应具有相同的错误设置:
error_page 404 403 /404.php;
error_page 500 502 503 504 /50x.php;
location = /404.php { root /home/main; allow all; }
location = /50x.php { root /home/main; }
然后,我会在每个错误页面的 PHP 中检查$_REQUEST['HTTP_HOST']
并显示相应的消息。这很好,而且易于管理所有网站的错误消息,而这方面的设计不需要做太多改变。
问题:此方法适用于没有任何特定扩展名的 HTML 文件和 URL。但如果不存在的 URL(即应产生 404 的 URL)包含 .file 扩展名,则该方法无效。
example.com/nonexistent-folder/ ---> 可行,显示 404.php 内容 example.com/nonexistent.gif ---> 不可行
第二个 URL 在 Chrome 中显示为 ERR_INVALID_RESPONSE。
CURL 标头检查可能会提供一些线索:
curl -I https://example.com/nonexistent.gif
HTTP/1.1 404 Not Found
Server: nginx
Date: Sat, 18 Feb 2017 18:19:48 GMT
Content-Type: application/x-httpd-php
Content-Length: 1840
Connection: keep-alive
Content-type 是 PHP。这是个问题吗?对于不存在的 GIF 文件,Content-type 是否需要为 GIF?如果不是,那么ERR_INVALID_RESPONSE
浏览器中是什么原因导致的?