Epic #89797: HrefLang / Canonical issues
On Plugin detail pages, incorrect hreflang tags are created when the record has no translation in the target language
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.