Apache如何配置HTTP-410消失状态码

时间:2019-11-20 08:54:17  来源:igfitidea点击:

域名更改后,

www.example.com/foo/file.html

。但是,Google和百度仍在抓取它。如何返回一个HTTP-410 gone错误,也就是说,使用CentOS/RHEL/Fedora/Ubuntu/Debian和类Unix操作系统上的apachehttpd服务器,告诉这些爬虫,资源永久不存在?

http错误状态代码410表示请求的资源(图像、css、js和所有其他文件)不再可用,并且不再可用。当资源被有意删除或者使用给定会话的某种令牌(例如缓存的pdf文件)生成的唯一url的一部分时,可以使用该410状态代码。在收到410状态码后,客户机或者bot将来不应再次请求资源。搜索引擎等机器人应该从索引中删除资源。在这个快速教程中,我们将学习如何从Apache服务HTTP状态代码410,而不是404或者403错误代码。

配置

最简单的配置是使用mod_alias Redirect指令在.htaccess文件中添加以下行。Cd到DocumentRoot,如/var/www/html/:

$ cd /var/www/html/
 $ vi .htaccess

添加以下行:

Redirect gone /foo/file.html

或者

Redirect 410 /foo/bar/demo.php

还可以使用RedirectMatch指令使用正则表达式,如下所示:

RedirectMatch gone regex here# 匹配/foo中的所有.png文件/

RedirectMatch go“/foo/.png$”# 以bar name开头的gif文件的另一个例子

RedirectMatch go“/foo/bar*.png$”# 再举一个例子。我们现在有响应网站,所以删除所有旧的移动友好的html页面

$redirecteSite/*.mobilesite“/

添加友好消息页面

尽管Apache服务器在出现4xx或者5xx HTTP状态代码时会忽略一般错误响应,但这些响应相当明显、不具信息性,并且可能会对站点用户造成威胁。我们可能希望提供自定义的错误响应,这些响应要么更友好,要么使用除英语以外的其他语言,或者样式更符合站点布局。因此,请添加以下代码:

错误文档410/errorpages/410-mobile.go.html

保存并关闭文件。下一个创建410-mobile.go.html在DocumentRoot目录中(例如/var/www/html/errorpage/)

# Syntax 
RedirectMatch gone regex-here
 
# Match all .png files in /foo/
RedirectMatch gone "/foo/\.png$"
 
# Another example for gif files starting with bar name
RedirectMatch gone "/foo/bar*\.png$"
 
# One more example. We now have resposive site so remove all old mobile friendly html pages
RedirectMatch gone "/mobilesite/*.html$"

根据需要添加错误消息:

<html>
<head>
   <title>Page Gone - 410 Error</title>
</head>
<body>
<h1>Error 410 - 页面已删除或者不存在</h1>
您键入的网址不正确,或者您要查找的网页可能已被删除。
</body>
</html>

访问者将看到以下页面以及HTTP/1.1 410 gone状态代码:

校验错误码

只需键入以下curl命令:

ErrorDocument 410 /errorpages/410-mobile.gone.html

输出示例:

$ mkdir /var/www/html/errorpage/ && cd $_
 $ vi 410-mobile.gone.html

请注意,我们必须将“HTTP/1.1 410 Gone”作为状态代码。

如何生成完整域的HTTP-410错误?

将以下内容添加到VirtualHost或者.htaccess。这是使用mod_rewrite完成的:

重写引擎打开

RewriteCond%{HTTP_HOST}^www\.example\.com$[NC]

重写规则^(.*)$-[L,G]

保存并关闭文件。