Configuration 

Extension configuration 

Admin Tools > Settings > Extension Configuration > extendredirect

checkMode
Type
options
Default
request

request: follow the redirect through TYPO3's frontend in the same PHP process, like a visitor would see it. database: resolve against the pages/sys_redirect tables without any request.

Email notification 

When a redirect is disabled - by the health check (on save or via the command) or by the page delete/hide protection - a mail can be sent. It is off by default and uses TYPO3's mail configuration ($GLOBALS['TYPO3_CONF_VARS']['MAIL']); the sender is the default mail sender.

notifyOnDisable
Type
boolean
Default
0

Notify when a redirect is disabled. Switches the mail and the webhook (see below).

notifyRecipients
Type
string

Comma or semicolon separated list of addresses. Invalid addresses are ignored; without a valid address nothing is sent.

notifyMode
Type
options
Default
digest

digest: one mail with every redirect disabled during one check, command run or page change. single: one mail per redirect, sent immediately.

notifyLanguage
Type
options
Default
en

Language of the mail: en or de.

Webhook 

Instead of or in addition to the mail, the same notification can be posted as JSON to a webhook. It needs notifyOnDisable and follows notifyMode (one call per run or per redirect).

notifyWebhookUrl
Type
string

http(s) URL that receives the JSON POST. Empty = no webhook. Calls time out after 5 seconds. Only administrators can set it, and it is not validated beyond the scheme: do not point it at internal services you do not control.

If the endpoint is behind Basic Auth, put the credentials in the URL (https://user:password@host/path): they are sent as an Authorization header and masked as *** in error messages. The URL is saved with the extension configuration, so a password in it ends up in config/system/settings.php. To keep it out of there, set it in config/system/additional.php, for example from an environment variable: $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['extendredirect']['notifyWebhookUrl'] = getenv('REDIRECT_WEBHOOK_URL');

notifyWebhookFormat
Type
options
Default
text

text: {"text": "..."}, understood by Slack, Mattermost and Rocket.Chat incoming webhooks. json: a structured payload with event (redirects_disabled), site, count and a list redirects of redirect_uid, source_host, source_path, target, status_code, reason.

PSR-14 event 

Independent of all notification settings, the Nivek1110ExtendredirectEventRedirectDisabledEvent is dispatched for every redirect that was disabled and logged (by the health check or the page delete/hide protection). The redirect is already disabled when listeners run.

use Nivek1110\Extendredirect\Event\RedirectDisabledEvent;
use TYPO3\CMS\Core\Attribute\AsEventListener;

#[AsEventListener]
final class MyListener
{
    public function __invoke(RedirectDisabledEvent $event): void
    {
        // getRedirectUid(), getSourceHost(), getSourcePath(), getTarget(),
        // getStatusCode(), getReason(), getEntry()
    }
}
Copied!