When the root URL of a domain doesn't have a specific site, how should visitors be directed to language folders?

Many multi-lingual sites don’t have the language tag for the default/primary language in the URL¹, but I think it’s better to include it. So yes, in my opinion, it’s not only good design, it’s the best.

Its suggesting itself to use the root page as a site/language chooser. I think there are three ways how this page can work:

  • Redirect (based on certain conditions²)
  • Show a list of links
  • Show a list of links and pre-select/highlight the most likely choice (based on certain conditions²)

This page is likely not relevant for SEO at all, because search engines typically would have no interest to present a language chooser page to their users. Such a page doesn’t (shouldn’t) have any relevant content, and if it’s redirecting, it would be useless to lead users to this redirecting page instead of the redirect target page (search engines know, or assume to know, their user’s language).

The most important thing (and as you mentioned, you already do it) is that it’s not the only way to choose the language. Users (and search engines) should be able to switch to the translations of the current page with a language switcher/alternate+hreflang links.

Apart from that, as far as search engines are concerned:

  • For Google Search, you could link it with rel="alternate" hreflang="x-default":

    […] the reserved value "x-default" is used for indicating language selectors/redirectors which are not specific to one language or region, e.g. your homepage showing a clickable map of the world

    (I don’t understand why this could be useful, and I think it’s bad design (as the selector page is not a translation of a language-specific homepage) but they mention it in their documentation, so I think it’s better to note it here, too.)

  • If you redirect, don’t use 301. As the redirect is based on changing/user-specific conditions, it’s not permanent. And you probably don’t want it to get cached for a user (who might change e.g. the accepted languages in their browser and come back to the root page).

    302 (or maybe 307?) seems to be the right status code.

  • Maybe: You could consider to noindex this root page, if it’s really just a list of links.


¹ By the way, for sites that use subdomains (en.example.org, da.example.org) instead of path segments for the language tags, the same question comes up: what to do with example.org/www.example.org? I think the solution is the same in this case.

² The conditions could be the Accept-Language header, the IP address, or whatever makes sense in your context.