I have build a websites with multiple languages. The URLs look like:
http://www.example.com/en/http://www.example.com/de/
If the user access the main domain http://www.example.com/ the web server detects the user's language (Accept-Language header) and redirects him to one of the above URLs.
Until now we have used a Temporary Redirect (302), because the user can return with other language settings and should then be redirected to the other one.
On another question, which advises to use 307:
307 Temporary Redirect
In this case, the request should be repeated with another URI; however, future requests should still use the original URI. In contrast to how 302 was historically implemented, the request method is not allowed to be changed when reissuing the original request. For instance, a POST request should be repeated using another POST request.
The question is: what is the proper status code for language redirection?
you should show a page that has links to all the choices. ---
This is pretty bad for UX though, having to wait through two page loads instead of a quick redirect and a page load. I imagine it's also for the SEO of your landing page. You can always put language links in your footer after you have redirected the user to the language they sent in the
– Charming Robot Sep 14 '20 at 15:13Accept-Languageheader. That way SE crawlers can still read all your links.