PHPackages                             oqlf/oqlf\_ratelimit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. oqlf/oqlf\_ratelimit

ActiveTypo3-cms-extension[HTTP &amp; Networking](/categories/http)

oqlf/oqlf\_ratelimit
====================

Typo3 middleware limitting the number of requests over time a client can make

1.0.7(2mo ago)0113GPL-2.0-or-laterPHPPHP &gt;=7.0

Since Sep 19Pushed 2mo agoCompare

[ Source](https://github.com/OQLF/oqlf_ratelimit)[ Packagist](https://packagist.org/packages/oqlf/oqlf_ratelimit)[ RSS](/packages/oqlf-oqlf-ratelimit/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (2)Versions (9)Used By (0)

oqlf\_ratelimit
===============

[](#oqlf_ratelimit)

> a Typo3 middleware to limit legitimate and illegitimate bots from hammering on computationally expensive website resources.

What does it do?
----------------

[](#what-does-it-do)

This extension allows you to set global and per IP group limits on how many times a resource can be requested in a configurable timeframe. When this limit is reached, the clients receive a `429 Too Many Requests` and a `Retry-After:` header telling them to cool down and retry at a slower pace.

[Rate limiting with 429 Too Many Requests](https://developer.mozilla.org/en-US/docs/Glossary/Rate_limit)

Why was this extension created?
-------------------------------

[](#why-was-this-extension-created)

My Typo3 website has a multi-page generated sitemap that requires a lot of database calls to produce. Search engine crawlers will request the index and then proceed to download all the pages in rapid succession, which bring my infrastructure to its knees. With oqlf\_ratelimit, I set /sitemap.xml (which covers /sitemap.xml, /sitemap.xml?page=1, /sitemap.xml?page=2,..) to have a maximum of 5 calls total / 10 seconds or 3 calls in an IP group / 10 seconds. With this limit, a well-behaved search engine crawler will download the first 3 pages, then get a 429 on the next few requests. It will understand that it needs to slow down and retry at a slower pace.

It's particularly effective on Googlebot, which reacts very nicely and quickly adapts to your rules. In the case of not-so-polite search engine bots, AI learning crawlers, or even illegitimate bots, they will be limited to a few costly requests and then will only receive free-to-you empty 429 replies.

Inspired by

Configuration
-------------

[](#configuration)

All configuration is done in the Settings-&gt;Extension configuration module.

### Redis server setup

[](#redis-server-setup)

[![Redis server setup](Resources/Public/Redis.png)](Resources/Public/Redis.png)

### Page limit setup

[](#page-limit-setup)

Up to 5 different limited resources can be set. Leave the path field empty if unused.

The path field will be matched against the start of the URL after the domain and the leading slash. The example below match https:∕∕www.example.com/**sitemap.xml** which will limit requests for:

- https:∕∕www.example.com/**sitemap.xml**
- https:∕∕www.example.com/**sitemap.xml**/anything
- https:∕∕www.example.com/**sitemap.xml**?page=12

[![Page limit setup](Resources/Public/Page_limit.png)](Resources/Public/Page_limit.png)

Requirements
------------

[](#requirements)

As of now, I haven't tested on TYPO3 lower than v13, but I see no reason it wouldn't work on v12, maybe even v11 and v10. I'll update the requirements if I have returns from other users or have time to test myself sometime.

It also requires a Redis or Valkey server v7 or greater for both, which you may already be using for the Typo3 cache. In this case, you can just use the same server.

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance87

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~30 days

Recently: every ~16 days

Total

8

Last Release

66d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/764d0f3d2454641b8ec7783c0e1c5e9b8c6591290c416841ce6799971ad642a1?d=identicon)[nalmar](/maintainers/nalmar)

---

Top Contributors

[![nalmar](https://avatars.githubusercontent.com/u/10710110?v=4)](https://github.com/nalmar "nalmar (13 commits)")

### Embed Badge

![Health badge](/badges/oqlf-oqlf-ratelimit/health.svg)

```
[![Health](https://phpackages.com/badges/oqlf-oqlf-ratelimit/health.svg)](https://phpackages.com/packages/oqlf-oqlf-ratelimit)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

101466.4k45](/packages/friendsoftypo3-content-blocks)[b13/http2

HTTP2 Server Push Support for TYPO3 - Speed up TYPO3 rendering via HTTP/2 Server Push

23354.6k](/packages/b13-http2)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

41515.2k](/packages/wazum-sluggi)[aoe/restler

A TYPO3-Extension, that integrates the popular PHP REST-framework Restler in TYPO3.

3079.2k1](/packages/aoe-restler)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

611.0M6](/packages/netresearch-rte-ckeditor-image)[b13/assetcollector

Asset collector - Add CSS and SVG files and strings as inline style tag/inline svg to the html code.

10123.2k](/packages/b13-assetcollector)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
