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
Requires
- php: ^8.2
- koenster/php-language-detection: ^1.0
- statamic/cms: ^5.0 || ^6.0
Requires (Dev)
- orchestra/testbench: ^9.0 || ^10.0
- pestphp/pest: ^3.8
- pestphp/pest-plugin-laravel: ^3.2
- phpunit/phpunit: ^11.0
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-Languageheader - 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:
- Reads the
Accept-Languageheader from the browser - Fetches all configured Statamic site locales and their URLs
- Finds the best match between browser preferences and available locales
- Issues a
302redirect 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.