我正在开发一个可以多种语言使用的网站。我正在使用子域来识别区域设置(看起来像是我们的最佳选择:https://support.google.com/webmasters/answer/182192),因此我们的英文网站将位于en.mysite.org
,法语位于fr.mysite.org
等。< / p>
并非所有翻译都可以立即使用,而且有些翻译永远不可用。所以我有两个场景可能需要两个不同的状态码:
当用户访问ru.mysite.org
时,我想向他们展示一个页面,告诉他们该语言尚未提供,但会提供有关如何使其可用的更多信息。
当用户访问pirate.mysite.org
时,我希望他们知道它可能永远不可用(Google也可能不知道该网站)。
现在我只是在这两种情况下渲染404,但我认为这些情况可能有更好的做法,特别是对于SEO目的。对于场景1,我开始认为501可能更有意义。对于第二种情况,我不确定是否有更好的选择。
答案 0 :(得分:3)
我认为404这两种情况都是合理的:
404 Not Found
找不到请求的资源,但将来可能会再次提供。客户的后续请求是允许的。
HTTP确实通过Accept-Language
标头提供语言支持,但您的网站不使用它。 (为什么不呢?)对于所有HTTP都知道,fr
和ru
子域只是您网站的其他部分。使用子域来表示语言不是&#34; HTTP方式&#34;返回相同资源的不同表示形式。因此,就HTTP而言,用户已经请求了一些不可用的东西,但它可能在将来可用。
我认为这两种情况都不代表服务器错误,所以5xx不是合适的类别。