camelot / canonical-url-bundle
Canonical URL Symfony bundle
Installs: 123
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 2
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^8.0
- symfony/config: ^6.0
- symfony/dependency-injection: ^6.0
- symfony/http-kernel: ^6.0
- symfony/routing: ^6.0
- twig/twig: ^3.0
Requires (Dev)
- camelot/coding-style: ^3.0
- friendsofphp/php-cs-fixer: ^3.8
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.16
- symfony/browser-kit: ^6.0
- symfony/framework-bundle: ^6.0
- symfony/phpunit-bridge: ^4.3.4 || ^5.0
- symfony/yaml: ^6.0
- vimeo/psalm: ^4.22
README
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.
Installation
Applications that use Symfony Flex
Open a command console, enter your project directory and execute:
$ composer require camelot/canonical-url-bundle
Applications that don't use Symfony Flex
Step 1: Download the Bundle
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require camelot/canonical-url-bundle
This command requires you to have Composer installed globally, as explained in the [installation chapter][composer] of the Composer documentation.
Step 2: Enable the Bundle
Then, enable the bundle by adding it to the list of registered bundles
in the config/bundles.php
file of your project:
// config/bundles.php return [ // ... Camelot\CanonicalUrl\CamelotCanonicalUrl::class => ['all' => true], ];
Step 3: Configure the Bundle
Add your configuration for the bundle to config/packages/camelot_canonical_url.yml
:
camelot_canonical_url: 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
Set the Symfony Router default URI in config/packages/routing.yaml
framework: router: # ... default_uri: 'https://example.org'
Usage
To add a <link rel="canonical">
tag to your pages include the following code in the <head>
of a twig template:
{{ camelot_canonical_link_tag() }}
The href attribute will default to the canonical URL for the current request, but this can be overridden:
{{ camelot_canonical_link_tag('https://example.org/my-custom-link') }}
License
This bundle is released under the MIT license