Apache如何配置HTTP-410消失状态码
域名更改后,
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]
保存并关闭文件。