PHPackages                             b13/justincase - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. b13/justincase

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

b13/justincase
==============

With incoming URLs, it does not matter if they are upper/lowercase, they just work.

2.0.0(1y ago)17236.1k↓50.9%9[1 issues](https://github.com/b13/justincase/issues)[1 PRs](https://github.com/b13/justincase/pulls)GPL-2.0-or-laterPHP

Since Jul 25Pushed 1y ago1 watchersCompare

[ Source](https://github.com/b13/justincase)[ Packagist](https://packagist.org/packages/b13/justincase)[ RSS](/packages/b13-justincase/feed)WikiDiscussions main Synced 4d ago

READMEChangelog (4)Dependencies (4)Versions (7)Used By (0)

TYPO3 Extension "just in case" - No matter what case your URL is, we'll hit it.
===============================================================================

[](#typo3-extension-just-in-case---no-matter-what-case-your-url-is-well-hit-it)

When your marketing team has accidentally pushed a campaign with mixed case URLs, they should not run into 404s.

This TYPO3 extension solves your pain - just in case.

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

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

By default, TYPO3 v9 is strict when you're actual page is called `https://b13.com/lets-connect` but your marketing dudes name it `https://b13.com/Lets-Connect`. TYPO3 v9 saves URLs as lower-case by default.

A simple PSR-15 based middleware transforms your incoming URL into lower-case and you should be fine, as both URLs would work for the users.

Installation
------------

[](#installation)

Use it via `composer req b13/justincase` or install the Extension `justincase` from the TYPO3 Extension Repository.

*justincase* requires TYPO3 v9.5.0 or later.

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

[](#configuration)

As a web developer, sometimes the team wants a 307 redirect, and sometimes to just work as everything would be lower-case.

*justincase* does the latter ("just pretend it works") and receives the URL, processes the URL further by default, however you can configure the extension on a per-site basis to do redirects instead, by modifying the Languages array of the site configuration yaml:

```
languages:
    -
    title: English
    ...
    redirectOnUpperCase: true
    # in case you want to use a status code, other than 307
    redirectStatusCode: 303

```

If you wish to enable redirect for all languages, add these lines at the bottom of the site configuration yaml instead:

```
settings:
    redirectOnUpperCase: true
    # in case you want to use a status code, other than 307
    redirectStatusCode: 303

```

Please note that this option only works for GET or HEAD requests.

Events
------

[](#events)

a `BeforeMiddlewareIsAppliedEvent` is fired before LowerCaseUri Middleware is applied. you can prevent applying Middleware by calling `event->doNotApply`

Caveats
-------

[](#caveats)

If specific route enhancers check on camel-case (e.g. `{order}/paymentForm/`) this might lead to unexpected behaviours and 404 pages.

License
-------

[](#license)

As TYPO3 Core, *justincase* is licensed under GPL2 or later. See the LICENSE file for more details.

Background, Credits &amp; Further Maintenance
---------------------------------------------

[](#background-credits--further-maintenance)

This extension was created as a show-case on what you can do with middlewares for TYPO3 v9 and customize so many things. See  for the initial request.

TYPO3 community often requests functionality, which can be put in small and efficient extensions, and *justincase* does exactly that, without having to burden everything into TYPO3 Core.

*justincase* was initially created by Daniel Goerz and Benni Mack for [b13, Stuttgart](https://b13.com), with the nice support from Matthias Stegmann for providing the extension name.

[Find more TYPO3 extensions we have developed](https://b13.com/useful-typo3-extensions-from-b13-to-you) that help us deliver value in client projects. As part of the way we work, we focus on testing and best practices to ensure long-term performance, reliability, and results in all our code.

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance42

Moderate activity, may be stable

Popularity44

Moderate usage in the ecosystem

Community18

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 60% 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 ~399 days

Recently: every ~462 days

Total

6

Last Release

541d ago

Major Versions

1.3.0 → 2.0.02025-01-10

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/165630?v=4)[Benni Mack](/maintainers/bmack)[@bmack](https://github.com/bmack)

![](https://avatars.githubusercontent.com/u/2851821?v=4)[b13 GmbH](/maintainers/b13)[@b13](https://github.com/b13)

---

Top Contributors

[![bmack](https://avatars.githubusercontent.com/u/165630?v=4)](https://github.com/bmack "bmack (24 commits)")[![davidsteeb](https://avatars.githubusercontent.com/u/3862523?v=4)](https://github.com/davidsteeb "davidsteeb (5 commits)")[![achimfritz](https://avatars.githubusercontent.com/u/2152991?v=4)](https://github.com/achimfritz "achimfritz (4 commits)")[![infabo](https://avatars.githubusercontent.com/u/3999104?v=4)](https://github.com/infabo "infabo (4 commits)")[![b13-michaelsemle](https://avatars.githubusercontent.com/u/23473071?v=4)](https://github.com/b13-michaelsemle "b13-michaelsemle (2 commits)")[![Nimmermaer](https://avatars.githubusercontent.com/u/4773406?v=4)](https://github.com/Nimmermaer "Nimmermaer (1 commits)")

### Embed Badge

![Health badge](/badges/b13-justincase/health.svg)

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

###  Alternatives

[friendsoftypo3/content-blocks

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

103519.9k53](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

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

40529.5k](/packages/wazum-sluggi)[typo3/cms-scheduler

TYPO3 CMS Scheduler - Schedule tasks to run once or periodically at a specific time.

169.3M231](/packages/typo3-cms-scheduler)[typo3/cms-lowlevel

TYPO3 CMS Lowlevel - Technical analysis of the system. This includes raw database search, checking relations, counting pages and records etc.

178.2M318](/packages/typo3-cms-lowlevel)[typo3/cms-redirects

TYPO3 CMS Redirects - Create manual redirects, list existing redirects and automatically createredirects on slug changes.

167.4M80](/packages/typo3-cms-redirects)[typo3/cms-form

TYPO3 CMS Form - Flexible TYPO3 frontend form framework that comes with a backend editor interface.

147.6M266](/packages/typo3-cms-form)

PHPackages © 2026

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