gaya/typo3-cacheable-resource-url

Insert a hash in the url of all the resources.

Installs: 1

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:typo3-cms-extension

pkg:composer/gaya/typo3-cacheable-resource-url

14.0.0 2026-02-21 22:38 UTC

README

Insert a hash in the url of all the resources, and refresh this hash when the cache is cleared. This way, clients (and CDN) can cache resources forever, but will get fresh resources if the cache is cleared.

Beware: URL rewriting on the webserver must be configured in consequence.

Install the extension

composer require gaya/typo3-cacheable-resource-url

Web server configuration

For Apache server 2.4+

Open the site's .htaccess, and place this set of rules right after RewriteEngine On.

    ### BEGIN EXT:cacheable_resource_url ###
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ^(.*)/cru-\d+/(.*)$ /$1/$2 [E=IS_CRU_URI,L]
	Header add Link "<https://%{HTTP_HOST}s%{REQUEST_URI}s>; rel=\"canonical\"" env=REDIRECT_IS_CRU_URI
	### END EXT:cacheable_resource_url ###

Note: you may have to adjust the protocol (http instead of https) and maybe to replace %{HTTP_HOST}s by your custom canonical domain name.

For Nginx

The nginx configuration needs to be separated in two parts:

  • the first one in the server block, before the .php location block, for the rewrite rule
  • the second one in each of the location blocks that serve resources, for the canonical header
    ### BEGIN EXT:cacheable_resource_url ###
    set $add_cru_canonical 0;
    location ~ ^/(.*)/cru-\d+/ {
        set $add_cru_canonical 1;
        rewrite ^/(.*)/cru-\d+/(.*)$ /$1/$2 last;
    }
    ### END EXT:cacheable_resource_url ###
    location / {
        expires $map_expires;

        ### BEGIN EXT:cacheable_resource_url ###
        if ($add_cru_canonical) {
            add_header Link '<$scheme://$http_host$uri>; rel="canonical"';
        }
        ### END EXT:cacheable_resource_url ###

        try_files $uri $uri/ /index.php$is_args$args;
    }

Note: you may have to adjust the $scheme or $http_host inside the Link depending on your needs.

Important: you must be extremely vigilant with the nginx configuration, because it's common to introduce security issue, like open access to any php file.