phpwatch/fast404

一个PSR-7中间件,用于快速返回404错误,对于不值得返回复杂404错误的请求。

v2.0.2 2024-03-15 06:01 UTC

This package is auto-updated.

Last update: 2024-09-15 07:06:58 UTC


README

快速终止HTTP请求,返回404 Not Found响应,用于静态资源。

Latest Stable Version CI Total Downloads License

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文件的大小是代码的四倍