PHPackages                             dorsetdigital/silverstripe-canonical - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dorsetdigital/silverstripe-canonical

ActiveSilverstripe-vendormodule[Utility &amp; Helpers](/categories/utility)

dorsetdigital/silverstripe-canonical
====================================

Adds a simple canonical tag in Silverstripe

v3.0.0(11mo ago)421.9k↓68.2%5[1 issues](https://github.com/DorsetDigital/silverstripe-canonical/issues)BSD-3-ClausePHPPHP ^8.3

Since Mar 20Pushed 11mo ago2 watchersCompare

[ Source](https://github.com/DorsetDigital/silverstripe-canonical)[ Packagist](https://packagist.org/packages/dorsetdigital/silverstripe-canonical)[ Docs](https://github.com/DorsetDigital/silverstripe-canonical)[ RSS](/packages/dorsetdigital-silverstripe-canonical/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (8)Dependencies (1)Versions (10)Used By (0)

silverstripe-canonical
======================

[](#silverstripe-canonical)

Adds a simple rel=canonical tag to Silverstripe

[![Scrutinizer Code Quality](https://camo.githubusercontent.com/4b3130e1890256da55dedef373d85c45fe6aad7841df2b3caf2a50dcec32a0a2/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f446f727365744469676974616c2f73696c7665727374726970652d63616e6f6e6963616c2f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/DorsetDigital/silverstripe-canonical/?branch=master)[![Build Status](https://camo.githubusercontent.com/4d326f1c21dbd95cea5c0b570bffa6982fcac6a82ea04cbd5cbcf31404a7528d/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f446f727365744469676974616c2f73696c7665727374726970652d63616e6f6e6963616c2f6261646765732f6275696c642e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/DorsetDigital/silverstripe-canonical/build-status/master)[![License](https://camo.githubusercontent.com/b3775a2de17853a90995faa104f941eef3ad3c40cc89e34b8b1eaea014614d4e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d425344253230332d2d436c617573652d626c75652e737667)](LICENSE.md)[![Version](https://camo.githubusercontent.com/847ef1efec4cd810b3a5d57c446463378265c37e7d5c3a9c53678e817bb41ccd/687474703a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f646f727365746469676974616c2f73696c7665727374726970652d63616e6f6e6963616c2e7376673f7374796c653d666c6174)](https://packagist.org/packages/dorsetdigital/silverstripe-canonical)

Requirements
============

[](#requirements)

- Silverstripe 6 - Use V3 branch
- Silverstripe 4 / 5 - Use V2 branch

Installation
============

[](#installation)

- Install the code with `composer require dorsetdigital/silverstripe-canonical`
- Run a `dev/build?flush` to update your project

Usage
=====

[](#usage)

This module adds a simple canonical tag to your pages to allow for the specification of the default domain.
The canonical tag allows you to signal to search engines like Google which is the authoritative version of the page to help reduce duplicate content issues caused by non-www versions, pages with different protocols, etc.

Once installed, go to the site settings and enter the full canonical domain. This should include the protocol (e.g. http:// or https://)

The module tries to be the last extension to be applied, and will try to remove any existing `rel="canonical"` tags from the head.

At the time of writing, the canonical tags are only added correctly for pages in the SiteTree. Pages generated from custom controllers or from DataObjects may or may not work! When creating the canonical tags, the module will look for a method called `CanonicalLink()` on the extended object. If you are using DataObjects as pages, adding this method on the relevant controller should allow you to control the canonical URL in these cases.

Additional Credits
==================

[](#additional-credits)

- Thanks to @sanderha for the Danish translation
- Thanks to @lerni for his enhancements
- Thanks to @satrun77 for adding CMS 6 support

###  Health Score

48

—

FairBetter than 93% of packages

Maintenance45

Moderate activity, may be stable

Popularity32

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity84

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 57.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~335 days

Recently: every ~631 days

Total

9

Last Release

349d ago

Major Versions

v1.1 → 2.x-dev2024-07-12

v2.0.0 → v3.0.02025-07-20

### Community

Maintainers

![](https://www.gravatar.com/avatar/ee91a8692650ac93cf817af52118adff8e11bf18866964f492f3e434e4f33f35?d=identicon)[DorsetDigital](/maintainers/DorsetDigital)

---

Top Contributors

[![DorsetDigital](https://avatars.githubusercontent.com/u/15108750?v=4)](https://github.com/DorsetDigital "DorsetDigital (23 commits)")[![lerni](https://avatars.githubusercontent.com/u/472115?v=4)](https://github.com/lerni "lerni (12 commits)")[![scrutinizer-auto-fixer](https://avatars.githubusercontent.com/u/6253494?v=4)](https://github.com/scrutinizer-auto-fixer "scrutinizer-auto-fixer (2 commits)")[![lukeskelding](https://avatars.githubusercontent.com/u/11160855?v=4)](https://github.com/lukeskelding "lukeskelding (1 commits)")[![sanderha](https://avatars.githubusercontent.com/u/6941043?v=4)](https://github.com/sanderha "sanderha (1 commits)")[![satrun77](https://avatars.githubusercontent.com/u/166450?v=4)](https://github.com/satrun77 "satrun77 (1 commits)")

---

Tags

canonical-tagssilverstripesilverstripe-4silverstripe-5silverstripe-modulehtmlsilverstripeseocanonical

### Embed Badge

![Health badge](/badges/dorsetdigital-silverstripe-canonical/health.svg)

```
[![Health](https://phpackages.com/badges/dorsetdigital-silverstripe-canonical/health.svg)](https://phpackages.com/packages/dorsetdigital-silverstripe-canonical)
```

###  Alternatives

[silverstripe/userforms

UserForms enables CMS users to create dynamic forms via a drag and drop interface and without getting involved in any PHP code

1371.1M85](/packages/silverstripe-userforms)[symbiote/silverstripe-advancedworkflow

Adds configurable workflow support to the CMS, with a GUI for creating custom workflow definitions.

46302.4k9](/packages/symbiote-silverstripe-advancedworkflow)[dorsetdigital/silverstripe-enhanced-requirements

Enhanced requirements for Silverstripe

118.4k4](/packages/dorsetdigital-silverstripe-enhanced-requirements)[axllent/silverstripe-cms-tweaks

Several CMS usability improvements

1726.4k1](/packages/axllent-silverstripe-cms-tweaks)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
