jorisnoo/statamic-locale-redirect

A Statamic addon that redirects visitors to the locale-specific home route.

Installs: 33

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/jorisnoo/statamic-locale-redirect

dev-main 2026-02-13 18:11 UTC

This package is auto-updated.

Last update: 2026-02-13 19:40:10 UTC


README

A Statamic addon that automatically redirects visitors from / to their locale-specific home route based on their browser language preferences.

Features

  • Detects the visitor's preferred language from the Accept-Language header
  • Matches it against your Statamic multi-site locales
  • Redirects from / to the best-matching locale home URL (e.g. /en, /fr, /de)
  • Skips bots and crawlers to preserve SEO
  • Configurable locale exclusions and restrictions
  • Zero configuration required for basic usage

Requirements

  • PHP 8.2+
  • Statamic 5 or 6

Installation

composer require noordermeer/statamic-locale-redirect

That's it. The addon registers itself automatically via Laravel's package discovery.

How It Works

When a visitor hits your site's root URL (/), the middleware:

  1. Reads the Accept-Language header from the browser
  2. Fetches all configured Statamic site locales and their URLs
  3. Finds the best match between browser preferences and available locales
  4. Issues a 302 redirect to the matched locale's home URL

If no match is found or the request isn't to /, the request passes through unchanged.

Bot Detection

Bots and crawlers (Googlebot, Bingbot, etc.) are automatically excluded from redirection so they can index your root URL normally.

Configuration

The addon works out of the box with no configuration. To customize behavior, publish the config file:

php artisan vendor:publish --tag=statamic-locale-redirect

This creates config/statamic/locale-redirect.php:

return [
    'exclude' => [],
    'only' => [],
];

Exclude Locales

Prevent specific locales from being redirect targets:

'exclude' => ['de', 'it'],

Restrict to Specific Locales

Only allow redirection to specific locales. When set, only takes precedence over exclude:

'only' => ['en', 'fr'],

Testing

./vendor/bin/phpunit

License

The MIT License (MIT). Please see LICENSE for more information.