Redirect Icon

Redirect

2.0

September 10th, 2026

Breaking change: redirects now live in a Collection, not a Global Set

Redirect rules were previously stored as items in a single "Weiterleitungen" global set, rendered as one big Replicator field. With many redirects, that made the control panel edit screen very slow to load. Each redirect is now its own Entry in a dedicated Redirects collection, giving you a fast, paginated, searchable list no matter how many rules you have.

Action required after upgrading

Run the migration command once to carry over your existing redirects:

php artisan pecotamic:redirects:migrate

This copies every redirect into the new collection (disabled rules stay unpublished) and then deletes the old global set. It's safe to run more than once. Until you run it, existing redirects will not work.

Other changes

  • Enabling/disabling a redirect is now done via the entry's native publish/unpublish control instead of a separate field
  • Redirects get their own top-level item in the control panel navigation instead of sitting in the general Collections list
  • The redirect target field is now validated (required for 301/302 responses, must be a relative path or absolute http(s):// URL)
  • The middleware now returns proper Laravel responses instead of exiting the request early, so the rest of the response pipeline (after-middleware, terminating events, Statamic's own error pages) still runs
  • Exact-match redirects are looked up via an indexed map instead of a linear scan
  • Field labels stay properly localized (German/English) per request
  • Added a full test suite, Pint linting, GitHub Actions CI, and Codacy static analysis configuration

1.1.1

September 9th, 2026

Fixed

  • Blueprint field labels ("Redirect", "Request URI", "Match type", etc.) are now actually localized per request. Previously the blueprint was saved as a static YAML file on first boot, freezing whatever language was active at that moment; it's now registered via Blueprint::setFallback() instead, so it's never persisted and re-evaluates (including translations) on every request
  • CI now targets the PHP versions the locked dev dependencies actually support (8.4/8.5) instead of 8.2/8.3, which could never install

1.1

September 9th, 2026

Fixed

  • Data::setup() never actually persisted the global set itself, only its localization, so the addon could crash on every request unless the global set had already been created manually through the CP

Changed

  • The middleware now returns proper Laravel responses (RedirectResponse for 301/302, abort() for 403/404/410) instead of exiting the request early
  • Exact-match redirects are now looked up via an indexed map instead of a linear scan
  • The target field is now validated (required for 301/302, must be a relative path or absolute http(s) URL)
  • Blueprint labels and the global set title are now translatable (English added as a fallback alongside German)

Added

  • Test suite (PHPUnit + Orchestra Testbench), Laravel Pint linting, and a GitHub Actions CI workflow

1.0.9

February 14th, 2025

fix for upgraded configs

1.0.8

January 16th, 2025

fix bug: respect "enabled" value

1.0.7

May 13th, 2024

  • N/A Changelog not available.

1.0.6

December 8th, 2023

  • N/A Changelog not available.

1.0.5

November 21st, 2023

  • N/A Changelog not available.

1.0.4

July 3rd, 2023

  • N/A Changelog not available.

1.0.3

July 3rd, 2023

  • N/A Changelog not available.

1.0.2

June 14th, 2023

  • N/A Changelog not available.

1.0.1

June 14th, 2023

  • N/A Changelog not available.

1.0

June 9th, 2023

  • N/A Changelog not available.