Bug #89648

Epic #89797: HrefLang / Canonical issues

On Plugin detail pages, incorrect hreflang tags are created when the record has no translation in the target language

Added by Christian Eßl over 2 years ago. Updated over 2 years ago.

Should have
Start date:
Due date:
% Done:


Estimated time:
TYPO3 Version:
PHP Version:
Is Regression:
Sprint Focus:


Let't take ext:news as an example:

- Create a page with the languages "Default" and "German"
- Install ext:seo
- Install ext:news
- Set up a news list page and a news detail page
- Translate the news detail page to "German"
- Create a news record in the default language. (but don't translate it)

Now if you go to the frontend and access the news detail in the default language, the HrefLangGenerator will create a hreflang for the german language.
This hreflang url will contain all the get parameters to the news record, although no german translation for this record exists. -> which will trigger a 404 error.

To fix this behaviour, the HrefLangGenerator would need to know about the plugin in use. (which is not simple to to do in a generic way). Better option could be an easy solution to extend the HrefLangGenerator with a hook to manipulate the output.

As another example, we are currently using a custom written HrefLangGenerator here, that reads the site configs RouteEnhancer config, checks if one of the route enhancers is in use, has a PersistedAliasMapper set and acts accordingly. (and works pretty well in a agnostic manner)
But our solution would only work, if a route enhancer is configured. Without a routeEnhancer, you can't easily determine for a get parameter, if it is mapped to a database record.

Related issues

Related to TYPO3 Core - Task #86614: Provide a possibility to override or hook into the hreflang generatorClosed2018-10-10


Also available in: Atom PDF