PHPackages                             dmk/mk30xlegacy - 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. dmk/mk30xlegacy

ActiveTypo3-cms-extension

dmk/mk30xlegacy
===============

DMK auto redirects to legacy/mirror/stale environment.

1.0.0(3y ago)02.9k—0%GPL-2.0-or-laterPHPCI failing

Since Apr 25Pushed 3mo ago4 watchersCompare

[ Source](https://github.com/DMKEBUSINESSGMBH/typo3-mk30xlegacy)[ Packagist](https://packagist.org/packages/dmk/mk30xlegacy)[ RSS](/packages/dmk-mk30xlegacy/feed)WikiDiscussions 11.5 Synced 1mo ago

READMEChangelog (1)Dependencies (15)Versions (3)Used By (0)

Mk 30x Legacy Redirects
=======================

[](#mk-30x-legacy-redirects)

[![TYPO3 compatibility](https://camo.githubusercontent.com/a6fd941c2478196d1c85c459e735ba076425e7ca561dd4efb98e4a3adc1c5329/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31312e352d6f72616e67653f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d7479706f33)](https://camo.githubusercontent.com/a6fd941c2478196d1c85c459e735ba076425e7ca561dd4efb98e4a3adc1c5329/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31312e352d6f72616e67653f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d7479706f33)[![Latest Stable Version](https://camo.githubusercontent.com/c86eae71f239848c48ce1e1d8b949cd5dbe552cfc4a47308d6769317c1cab9d3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f646d6b2f6d6b3330786c65676163792e7376673f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d636f6d706f736572)](https://packagist.org/packages/dmk/mk30xlegacy)[![Total Downloads](https://camo.githubusercontent.com/7065eaa728ff8e91becad8f29bd0337859e22e1023bb584e70491a7c7e28414f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f646d6b2f6d6b3330786c65676163792e7376673f6d61784167653d33363030267374796c653d666c61742d737175617265)](https://packagist.org/packages/dmk/mk30xlegacy)[![Build Status](https://camo.githubusercontent.com/4f2652cd7dcb4e5f4e387215bf11931e7fae3cd1abd2cf7996d45200da537e61/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f444d4b45425553494e455353474d42482f7479706f332d6d6b3330786c65676163792f70687063692e796d6c3f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d6769746875622d616374696f6e73)](https://github.com/DMKEBUSINESSGMBH/typo3-mk30xlegacy/actions?query=workflow%3A%22PHP+Checks%22)[![Code Coverage](https://camo.githubusercontent.com/0dcd880ea2a104702a6ca1e22615e898169866308113edced2d4c402213d1524/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d3130302532352d677265656e3f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d636f6465636f76)](https://github.com/DMKEBUSINESSGMBH/typo3-mk30xlegacy/actions?query=workflow%3A%22PHP+Checks%22)[![License](https://camo.githubusercontent.com/5645f6dc12aeb794c3cc72727c4a24aff39c2c138285c6d9a92a619d167450aa/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f646d6b2f6d6b3330786c65676163792e7376673f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d676e75)](https://packagist.org/packages/dmk/mk30xlegacy)

This TYPO3 extension performs automatic redirects to a legacy domain if the requested uri was not found at the TYPO3.

What it does in short:
----------------------

[](#what-it-does-in-short)

- Registers a middleware.
- Checks the TYPO3 response for unavailable status code.
- asks matchers for the uri to the new or old source to redirect to
    - PageTypeSuffixRemovalMatcher:
        Checks whether the url has a suffix and whether the url exists without an ending.
        (Core SiteMatcher finds the uri or a HEAD request returns 200 status code).
    - LegacyUriMatcher:
        Checks if the request uri is available at the legacy domain
        (returns 200 status code on HEAD request).
- Performs a redirect to the new uri.

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

[](#installation)

Install TYPO3 via composer.
From project root you need to run

```
composer require dmk/mk30xlegacy

```

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

[](#configuration)

The base configuration is done by extension configuration.
Use The *Admin Tools &gt; Settings &gt; Configure Extensions* module to configure mk30xlegacy.

The configuration can be overridden by site configuration or site language configuration.
Use the *Site Management &gt; Sites* module to configure the extension.

- **enabled**
    Enables the legacy redirect middleware. *(default: 1)*
- **responseMatchPattern**
    Response match pattern: Regex to match with current request http response code to perform legacy redirect. *(default: \[345\]\\d\\d)*
- **suffixRemovalSuffixes**
    Page Type Suffixes: A comma seperated list of suffixes to remove from request uri. *(default: html,htm,xhtml)*
- **redirectDomain**
    Redirect Domain: Domain to performe the legacy redirect to.
- **redirectDomainAvailabilityMatchPattern**
    Legacy availability match pattern: Regex to match with http response code from legacy check. On match a redirect to legacy domain will be performed. *(default: 2\\d\\d)*
- **redirectResponseStatusCode**
    Redirect Response HTTP-Status-Code: The HTTP-Status Code used for redirects to legacy domain. *(default: 307)*

Add Custom Matcher
------------------

[](#add-custom-matcher)

The redirect middleware uses a matcher registry, so custom matchers can be developed.

```
class CustomMatcher implements MatcherInterface
{
    public function isMatchableResponse(ResponseInterface $response): bool
    {
        // check here if this matcher is enabled for the typo3 response!
        return true;
    }

    public function matchRequest(ServerRequestInterface $request, ResponseInterface $response): UriResult
    {
        $result = new UriResult();
        // add your custom stuff here,
        // to create an uri result (for redirect)
        // depending on the request and response
        return $result
    }
}
```

Add the custom matcher in your `Services.yaml`:

```
    DMK\MyAwesomeExtension\Routing\Matcher\CustomMatcher:
        tags:
            -
                name: 'mk30xlegacy.routing.matcher'
                priority: 100
```

Custom legacy uri manipulation
------------------------------

[](#custom-legacy-uri-manipulation)

You can register an event listener before the availability check of the LegacyUriMatcher is performed, to manipulate the legacy url by your own *(we recommend to use a custom matcher instead!)*:

```
class LegacyUriMatchEventListener
{
    public function __invoke(UriMatchPreAvailabilityCheckEvent $event): void
    {
        $uri = $event->getResult()->getUri();
        // manipulate the url here, add query parameters for example.
        $uri = $uri->withQuery('?legacy=redirect&'.$uri->getQuery());
        $event->getResult()->setUri($uri);
    }
}
```

Add the custom listener in your `Services.yaml`:

```
services:
    DMK\MyAwesomeExtension\Event\EventListener\LegacyUriMatchEventListener:
        tags:
            -
                name: 'event.listener'
                identifier: 'MyAwesomeLegacyUriMatchEventListener'
                event: DMK\Mk30xLegacy\System\Event\UriMatchPreAvailabilityCheckEvent
```

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance54

Moderate activity, may be stable

Popularity20

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 93.3% 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 ~509 days

Total

3

Last Release

102d ago

Major Versions

1.0.0 → 11.5.x-dev2023-09-08

11.5.x-dev → 13.4.x-dev2026-02-05

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/5131653?v=4)[Michael Wagner](/maintainers/rengaw83)[@rengaw83](https://github.com/rengaw83)

---

Top Contributors

[![rengaw83](https://avatars.githubusercontent.com/u/5131653?v=4)](https://github.com/rengaw83 "rengaw83 (14 commits)")[![hannesbochmann](https://avatars.githubusercontent.com/u/6302628?v=4)](https://github.com/hannesbochmann "hannesbochmann (1 commits)")

---

Tags

automationcomposerphpredirectstypo3typo3-extension

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/dmk-mk30xlegacy/health.svg)

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

###  Alternatives

[fluidtypo3/vhs

This is a collection of ViewHelpers for performing rendering tasks that are not natively provided by TYPO3's Fluid templating engine.

1954.1M49](/packages/fluidtypo3-vhs)[in2code/powermail

Powermail is a well-known, editor-friendly, powerful and easy to use mailform extension for TYPO3 with a lots of features

982.5M38](/packages/in2code-powermail)[typo3/testing-framework

The TYPO3 testing framework provides base classes for unit, functional and acceptance testing.

675.0M775](/packages/typo3-testing-framework)[fluidtypo3/flux

The flux package from FluidTYPO3

152982.2k20](/packages/fluidtypo3-flux)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

63991.3k4](/packages/netresearch-rte-ckeditor-image)[friendsoftypo3/content-blocks

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

96374.6k23](/packages/friendsoftypo3-content-blocks)

PHPackages © 2026

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