The CanonicalUrlBundle
is a Symfony bundle to redirect requests from multiple URLs for the same resource to a single canonical URL.
For example, if you had a resource named /about-us for your site example.org it could potentially be accessed with:
http://example.org/about-us
http://example.org/about-us/
http://www.example.org/about-us
http://www.example.org/about-us/
https://example.org/about-us
https://example.org/about-us/
https://www.example.org/about-us
https://www.example.org/about-us/
When a user requests the resource with any of the above URLs, CanonicalUrlBundle
will build a canonical URL based on a predefined site URL and will
perform an HTTP redirect to it if the request URL does not match.
The bundle can also add a <link rel="canonical">
tag to your twig templates, see the Usage section for how.
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
composer require palmtree/canonical-url-bundle
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Then, enable the bundle by adding it to the list of registered bundles
in the app/AppKernel.php
file of your project:
<?php
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new Palmtree\CanonicalUrlBundle\PalmtreeCanonicalUrlBundle(),
);
// ...
}
// ...
}
Add your configuration for the bundle to app/config/config.yml
:
palmtree_canonical_url:
site_url: 'https://example.org' # replace with your full site URL (without trailing slash)
redirect: true # Set to false disable redirects if you just want to use the canonical link tag
redirect_code: 301 # Leave this at 301 for SEO
trailing_slash: false # Set to true if your routes and canonical URLs contain a trailing slash
To add a <link rel="canonical">
tag to your pages include the following code in the <head>
of a twig tempalte:
{{ palmtree_canonical_link_tag() }}
The href attribute will default to the canonical URL for the current request, but this can be overidden:
{{ palmtree_canonical_link_tag('http://example.org/my-custom-link') }}
This bundle is released under the MIT license