phpwatch / fast404
一个PSR-7中间件,用于快速返回404错误,对于不值得返回复杂404错误的请求。
Requires
- php: ^8.3
- psr/http-message: ^1.1 || ^2.0
Requires (Dev)
- nyholm/psr7: ^1.8.1
- phpunit/phpunit: ^11.0.6
README
快速终止HTTP请求,返回404 Not Found
响应,用于静态资源。
phpwatch/fast404
是一个库/中间件,您可以使用它来快速终止HTTP请求并返回404 Not Found
响应。使用场景是处理所有HTTP请求的框架,并快速返回404消息给静态资源,如.jpg
或.png
。这样可以防止框架初始化渲染引擎、数据库连接等来处理这些类型的请求。
使用场景是处理所有HTTP请求的框架,并快速返回404消息给静态资源,如.jpg
或.png
。这样可以防止框架初始化渲染引擎、数据库连接等来处理这些类型的请求。
PHP框架通常使用路由器来处理传入的HTTP请求。Web服务器将所有请求转发到PHP框架(通常是index.php
文件)。这导致静态资源,如.jpg
或.png
请求也被路由到PHP框架。
框架可以生成漂亮的404 Not Found错误页面,但对于不是用户访问的主要URL的图像、视频和其他嵌入内容生成漂亮的错误页面是资源浪费。
此软件包包含可配置但合理的默认值,作为中间件添加时,它会在请求早期执行,并短路其余的引导过程,返回一个快速且简单的“未找到”页面,并带有正确的HTTP头。这可以通过无需连接到数据库或启动渲染引擎来减少开销。
注意,其余执行将通过PHP die()
调用终止。如果您想通过框架事件或其他中间件记录错误消息,则此软件包不适合您。
安装
composer require phpwatch/fast404
用法
您需要在您的框架中执行提供的中间件。以下是一个Slim v3的示例
1. 将Fast404Middleware
类添加到容器中
<?php $container[Fast404Middleware::class] = static function (Container $container) { return new Fast404Middleware(); };
2. 在单个路由/分组或整个应用程序中使用中间件
<?php use PHPWatch\Fast404\Fast404Middleware; $app->add(Fast404Middleware::class); // For whole app $app->get/users/{username},...)->add(Fast404Middleware::class); // Or, for individual routes
配置
您可以在创建Fast404Middleware
时声明设置
<?php new Fast404Middleware(string $error_message = 'Not found', string $regex = null, ?string $exclude_regex = null)
$error_message
:错误消息的文本。您可以使用任何内容,包括HTML内容。请注意,此库不会设置content-type
头。$regex
:包括分隔符的有效正则表达式。默认(如下)是fast-404,它是一组预配置的文件扩展名。$exclude_regex
:如果提供,则运行此正则表达式,如果匹配,则请求被允许。您还可以将此正则表达式作为负向前瞻/后顾匹配与$regex
结合使用,但这会使正则表达式难以阅读。
默认匹配
默认情况下,使用以下正则表达式。它匹配一组预配置的常见扩展名。
/\.(?:js|css|jpg|jpeg|gif|png|ico|exe|bin|dmg)$/i
根据您的需求进行配置;只需确保您绝对不希望框架继续请求这些类型的扩展。
PSR-15 / PSR-7
截至目前,有一个接受PSR-7 ServerRequestInterface
对象的__invoke
方法。这使得这个库与Slim v3立即兼容。对PSR-15的支持正在开发中,并将与Slim v4以及其他兼容的调度器兼容。
记录404错误
这个库会立即使用可配置的错误信息和HTTP 404错误终止请求。不会有日志记录。如果您希望您的Web服务器记录这些相同的错误,它不应该将请求交给框架。
我真的需要404日志
不。出去并自己实现它。这是一个40行代码的包。这个README文件的大小是代码的四倍。