我需要在我的网络服务器上对所有 404 错误返回 410 gone,以便 Google 可以删除不再存在的旧搜索结果。我知道 Google 处理 410 和 404 的方式不同,并且会从搜索结果中删除返回 410 的页面,尽管它们仍保留在索引中。之前的开发人员构建了一个混乱的 wordpress,我们用一个自定义电子商务平台替换了它,该平台每天生成自己的站点地图,因此理想情况下,对旧页面返回 410 gone 将为我们的网站创建一个可持续的自动搜索索引,从而减轻与 SEO 相关的{大多数}手动劳动。
我试图像这样简单地返回 410 来表示 404,但是在尝试重新加载 nginx 的配置文件时会引发异常。
error_page 404 return 410;
抛出的异常:
2014/09/13 01:49:28 [emerg] 32636#0: invalid value "return" in /etc/nginx/nginx.conf:129
实际上,我在这里有什么选择?我真的找不到太多关于 nginx 的这个主题的信息。我想如果一切都失败了,我可以将 404 重定向到通过 php 返回 410 的 php 脚本http_response_code()
,但如果可能的话,我想仅使用 nginx 来解决这个问题。有人能在这里提供解决方案吗?谢谢。
答案1
更改 http 状态代码的正确语法是使用=响应代码。以下是文档。
语法:error_page code...[=[response]] uri;
默认: -
上下文:http、服务器、位置、是否在位置
定义将显示的指定错误的 URI。仅当当前级别上未定义 error_page 指令时,才会从上一级继承 error_page 指令。uri 值可以包含变量。
此外,可以使用“=response”语法将响应代码更改为另一个,例如:
错误页面 404 =200 /empty.gif;
就你的情况而言,语法是
error_page 404 =410 /some-error-page;