BeforeRedirectMatchDomainEvent

New in version 12.3

The PSR-14 event \TYPO3\CMS\Redirects\Event\BeforeRedirectMatchDomainEvent allows extensions to implement a custom redirect matching upon the loaded redirects or return the matched redirect record from other sources.

Example

EXT:my_extension/Classes/Redirects/EventListener/MyEventListener.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Redirects\EventListener;

use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Redirects\Event\BeforeRedirectMatchDomainEvent;

#[AsEventListener(
    identifier: 'my-extension/before-redirect-match-domain',
)]
final readonly class MyEventListener
{
    public function __invoke(BeforeRedirectMatchDomainEvent $event): void
    {
        $matchedRedirectRecord = $this->customRedirectMatching($event);
        if ($matchedRedirectRecord !== null) {
            $event->setMatchedRedirect($matchedRedirectRecord);
        }
    }

    private function customRedirectMatching(BeforeRedirectMatchDomainEvent $event): ?array
    {
        // @todo Implement custom redirect record loading and matching. If
        //       a redirect based on custom logic is determined, return the
        //       :sql:`sys_redirect` tables conform redirect record.

        // Note: Below is simplified example code with no real value.
        $record = BackendUtility::getRecord('sys_redirect', 123);

        // Do custom matching logic against the record and return matched
        // record - if there is one.
        if ($record /* && custom condition against the record */) {
            return $record;
        }

        // Return null to indicate that no matched redirect could be found
        return null;
    }
}
Copied!

New in version 13.0

The PHP attribute \TYPO3\CMS\Core\Attribute\AsEventListener has been introduced to tag a PHP class as an event listener. Alternatively, or if you need to be compatible with older TYPO3 versions, you can also register an event listener via the Configuration/Services.yaml file. Switch to an older version of this page for an example or have a look at the section Implementing an event listener in your extension.

API

class \TYPO3\CMS\Redirects\Event\ BeforeRedirectMatchDomainEvent

This event is fired in TYPO3CMSRedirectsServiceRedirectService->matchRedirect() for checked host and wildcard host "*".

It can be used to implement a custom match method, returning a matchedRedirect record with eventually enriched record data.

getDomain ( )
returntype

string

Returns:

string Request domain name (host)

getPath ( )
returntype

string

Returns:

string Request path

getQuery ( )
returntype

string

Returns:

string Request query parameters

getMatchDomainName ( )
returntype

string

Returns:

string Domain name which should be checked, and getRedirects() items are provided for

getMatchedRedirect ( )
returntype

array

Returns:

array|null Returns the matched sys_redirect record or null

setMatchedRedirect ( array $matchedRedirect)
param array $matchedRedirect

Set matched sys_redirect record or null to clear prior set record