Canonical host middleware for Laravel

1.0.0 2017-08-17 08:26 UTC

This package is auto-updated.

Last update: 2021-10-17 12:07:19 UTC


Need your Laravel app to redirect from the root domain to www. or the other way around? Need your Laravel app to redirect all visitors to a HTTPS connection?

This is a small library for Laravel that provides a simple middleware that provides basic redirects for Laravel apps. You simply set the canonical host for your app and whether you want requests to be secured by default and Canonical will handle the rest.

This prevents duplicate content by ensuring that all visitors to your site are redirected to the correct host and upgraded to a secure connection if available.

You can configure this sort of stuff up in your web server as well, but there is an ease to keeping it inside your app so it's all kept in the same place.


First run composer require watson/canonical.

Next, add Watson\Canonical\CanonicalMiddleware to your app/Http/Kernel.php file where you'd like it to run.

Please note that Canonical only supports Laravel 5.5 at this time.


You can configure Canonical through environment variables or by publishing the configuration file to your app with php artisan vendor:publish --tags=config.

Take a look at the configuration file that was created for you, config/canonical.php. Here you can set the default host name that you want to use for your app.

If your app receives a request from another host it will perform a permanent redirect to the canonical host you've set here, keeping the request path.

You can also opt to secure all requests too, so an insecure request will automatically be redirects to HTTPS if your site supports it.

Finally you are able to opt-out certain hosts if you don't want to redirect them - for example, an api. subdomain. Add any domains you wish to the ignore array.