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. custom extension. 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.