---
title: "Configuration"
manual: "Extend Redirect"
version: "1.2"
permalink: "https://docs.typo3.org/permalink/nivek1110/extendredirect:configuration@1.2"
source: "Configuration/Index.rst"
rendered: "2026-10-30T14:28:20+00:00"
---

# Configuration {#configuration}

## Extension configuration {#extension-configuration}

**Admin Tools > Settings > Extension Configuration > extendredirect**

-   **checkMode**

    -   *Type:* options
    -   *Default:* request

    `request`: follow the redirect live through a frontend sub-request, like a browser.
    `database`: resolve against the `pages`/`sys_redirect` tables without any request.

    > [!NOTE]
    > `request` mode needs a reachable, correctly configured site base URL
    > (Site Configuration > Base). Use `database` mode for local or offline environments.

## Email notification {#configuration-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 {#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.

-   **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 {#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.

```php
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()
    }
}
```

> [!NOTE]
> Mail transport and webhook call run after the response: under PHP-FPM the request of the editor is finished
> first (`fastcgi_finish_request()`), so a slow SMTP server or endpoint never keeps the editor waiting. In the CLI
> (command, Scheduler) they are sent at once; without PHP-FPM the request still waits.

> [!NOTE]
> Nothing is sent by `--dry-run`. A failing mail transport is only logged and never breaks a save, a
> check or a page deletion.
