当请求的语言不可用时,最好使用什么 HTTP 状态代码?

What is the best HTTP status code to use when the requested language is unavailable?

我正在开发一个将提供多种语言版本的网站。我正在使用子域来识别语言环境(阅读后似乎是我们的最佳选择:https://support.google.com/webmasters/answer/182192),因此我们的英语站点将位于 en.mysite.org,法语站点位于 fr.mysite.org

并非所有翻译都会立即可用,有些永远不会可用。所以我有两种情况可能需要两种不同的状态码:

  1. 当用户访问 ru.mysite.org 时,我想向他们展示一个页面,告诉他们该语言尚不可用,但会提供有关他们如何帮助使其可用的更多信息.

  2. 当用户访问 pirate.mysite.org 时,我希望他们知道它可能永远不可用(并且 Google 也应该不知道该站点)。

现在我只是在这两种情况下都呈现 404,但我认为对于这些情况可能有更好的做法,特别是对于 SEO 目的。对于场景 1,我开始认为 501 可能更有意义。对于第二种情况,我不确定是否有更好的选择。

我认为 404 对于这两种情况都是合理的:

404 Not Found

The requested resource could not be found but may be available again in the future. Subsequent requests by the client are permissible.

(Wikipedia)

HTTP 确实通过 Accept-Language header 提供了语言支持,但您的站点没有使用它。 (为什么不呢?)据 HTTP 所知,frru 子域只是您网站的其他部分。使用子域来表示语言并不是 "the HTTP way" 到 return 同一资源的不同表示。所以就 HTTP 而言,用户请求了一些不可用的东西,但它可能在将来可用。

我认为这两种情况都不代表服务器错误,因此 5xx 不是合适的类别。