PHPackages                             supseven/canonical-files - 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. supseven/canonical-files

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

supseven/canonical-files
========================

Extension to add canonical url headers to files

v3.0.0(2mo ago)11.6k↓50%GPL-3.0-onlyPHPPHP ^8.5CI passing

Since Feb 27Pushed 2mo ago4 watchersCompare

[ Source](https://github.com/supseven-at/canonical-files)[ Packagist](https://packagist.org/packages/supseven/canonical-files)[ RSS](/packages/supseven-canonical-files/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (4)Versions (21)Used By (0)

Canonical URL header for files
==============================

[](#canonical-url-header-for-files)

This TYPO3 extension adds canonical url headers to files (images, PDFs...), depending on the file storage the files are located in. Storages can be linked to specific sites (respectively site configurations), so all files located in that storage are delivered with an additional canonical header pointing to the domain of the according site.

Let's say a TYPO3 instance serves two domains, [example.at](https://example.at)and [example.de](https://example.de), wich have two file storages defined respectively, `storage-at` and `storage-de`. Then a file provided for download on domain [example.at](https://example.at) but physically located in `storage-de` will be delivered with the canonical header `https://example.de/fileadmin/....`

Installation
------------

[](#installation)

Add the package to your composer.json via

```
composer require supseven/canonical-files
```

The extension adds the field `tx_canonical_files_site_identifier` to the table `sys_file_storage`. Compare database (database migration) if necessary.

Configuration
-------------

[](#configuration)

Add a file storage for each available site configuration (if applicable) and set the field `Site` in the tab `Canonical Files` accordingly. All files stored within such a file storage will get the base, respectively base variant, of this site configuration as canonical header.

To make this happen, files have to be routed through TYPO3: Add the following lines to your project's .htaccess file (amend accordingly):

```
RewriteCond %{REQUEST_URI} ^/fileadmin
RewriteCond %{REQUEST_FILENAME} \.(pdf|doc|docx|xls|xlsx|ppt|pptx)$
RewriteRule ^.*$ %{ENV:CWD}index.php [QSA,L]

```

### Optional

[](#optional)

It makes sense to prevent editors to upload files directly from file reference fields within backend forms. Add this to your TSconfig to apply it globally:

```
setup.override {
    edit_docModuleUpload = 0
}
setup.fields.edit_docModuleUpload.disabled = 1

```

Legal
-----

[](#legal)

### License

[](#license)

This package is provided under the GPL v3 license. See the file [LICENSE](./LICENSE) or  for details.

###  Health Score

50

—

FairBetter than 96% of packages

Maintenance84

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 81% 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 ~38 days

Recently: every ~171 days

Total

20

Last Release

84d ago

Major Versions

v1.0.5 → v2.0.22024-03-03

v1.0.8 → v2.0.32024-03-07

v1.0.9 → v2.0.42024-04-12

v1.0.x-dev → v2.0.x-dev2024-04-28

v2.0.6 → v3.0.02026-02-24

PHP version history (3 changes)v1.0.0PHP ^8.2

v1.0.6PHP ^8.1

v3.0.0PHP ^8.5

### Community

Maintainers

![](https://www.gravatar.com/avatar/3b9b873a3ab532be8b148c0da96ce9c37931a2268d52af7a00e0d0251f855088?d=identicon)[josefglatz](/maintainers/josefglatz)

![](https://avatars.githubusercontent.com/u/705480?v=4)[garfieldius](/maintainers/garfieldius)[@garfieldius](https://github.com/garfieldius)

![](https://avatars.githubusercontent.com/u/1773048?v=4)[Volker](/maintainers/vkemeter)[@vkemeter](https://github.com/vkemeter)

![](https://www.gravatar.com/avatar/734db5f15c75f25af8cfae564d15f7bc93ddc9460ed400afffc19ad21411c48b?d=identicon)[supseven](/maintainers/supseven)

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

---

Top Contributors

[![helmutstrasser](https://avatars.githubusercontent.com/u/888354?v=4)](https://github.com/helmutstrasser "helmutstrasser (17 commits)")[![garfieldius](https://avatars.githubusercontent.com/u/705480?v=4)](https://github.com/garfieldius "garfieldius (4 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/supseven-canonical-files/health.svg)

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

###  Alternatives

[fluidtypo3/flux

The flux package from FluidTYPO3

152982.2k20](/packages/fluidtypo3-flux)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

96374.6k23](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

39488.5k](/packages/wazum-sluggi)[eliashaeussler/typo3-form-consent

Extension for TYPO3 CMS that adds double opt-in functionality to EXT:form

1481.0k](/packages/eliashaeussler-typo3-form-consent)[b13/assetcollector

Add CSS and SVG files and strings as inline style tag/inline svg to the html code.

10118.4k](/packages/b13-assetcollector)[mautic/mautic-typo3

Add-on TYPO3 extension that enhances the "EXT:marketing\_automation" TYPO3 extension by connecting it to the Mautic Marketing Automation platform: Determine "Persona" from Mautic segments. Also provides additional services e.g. language synchronisation between Mautic and TYPO3.

236.3k](/packages/mautic-mautic-typo3)

PHPackages © 2026

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