如何强制Apache返回一个HTTP 410-状态码
我在我的站点删除了www.example.com/foo/file.html这个页面资源。但是,它仍然是被谷歌(Google)、雅虎(Yahoo)和许多其他机器人抓取。在CentOS / RHEL Fedora / Ubuntu / Debian和类unix操作系统上使用Apache Httpd服务器的站点,怎么返回一个http 410错误提示码,即告诉了这些机器人,你视图抓取的资源永久不存在了。
http 410错误状态码表明资源(图片、css、js和所有其他文件)永久失效。在使用的一个资源被故意删除或使用某种令牌,对于给定会话(例如缓存的pdf文件)生成特殊的url,都有可能使用到410状态码。当接收到一个410状态码,客户端或机器人在未来不应该再请求该项资源。机器人等搜索引擎应该把资源从他们的索引中删除。
在下面的介绍中,你将学习Apache服务器如何快速返回HTTP状态码410,而不是404或403错误代码。
配置
最简单的配置方法,是使用使用mod_alias定向指令,在.htaccess文件中添加如下内容。切换 DocumentRoot目录,如/var/www/html/:
$ cd /var/www/html/ $ vi .htaccess
添加以下内容到文件中:
Redirect gone /foo/file.html 或 Redirect 410 /foo/bar/demo.php
你也可以通过RedirectMatch指令,使用正则表达式,如下:
# 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*\.gif$" # One more example. We now have resposive site so remove all old mobile friendly html pages RedirectMatch gone "/mobilesite/*.html$"
添加友好消息页面
虽然Apache服务器对于访问错误或者不存在的资源返回4xx或者5xx HTTP状态代码,但是这些错误提示非常冷漠不友好,这些状态码传递的信息非常僵硬费解,甚至可能让网站的用户望而却步。你可以提供自定义错误提示,使用户体验更加友好。比如返回一些非英语的提示内容,或者是在返回内容中附加你网站特殊布局内容。所以你可以添加下面的代码:
ErrorDocument 410 /errorpages/410-mobile.gone.html
在你的站点目录创建相应文件,在文件中编辑你要返回的内容:
$ mkdir /var/www/html/errorpage/ $ vi 410-mobile.gone.html
在html错误提示文件中添加你需要显示的内容,比如:
<html> <head> <title>Page Gone - 410 Error</title> </head> <body> <blockquote> <h1>Error 410 - Page deleted or gone</h1> This might be because: <ul> <li>You have typed the web address incorrectly, or the page you were looking for may have deleted.</li> </ul> Please try the following options instead: <ul> <li>Use <a href="/search.html">search option</a> to see if it's available elsewhere. Or visit our home page for the latest info.</li> </ul> <hr> <small>If you feel like it, mail the url, and where you came from to webmaster@example.com</small> </blockquote> </body> </html>
上面内容保存后,当你的网站访问者,访问到一些永久删除的资源时,会看到这样页面提示:
验证错误状态码
用下面的命令可以验证错误状态码是否生效:
$ curl -I www.example.com/foo/page.html $ curl -I www.example.com/mobilesite/4242.html
相应输出:
HTTP/1.1 410 Gone Server: Apache Date: Mon, 14 Dec 2015 14:52:28 GMT Content-Type: text/html Content-Length: 335 Connection: keep-alive
请注意,如果你必须得到一个"HTTP/1.1 410"状态码,那么在一个完整域名如何产生http-410错误码?
把以下内容添加到你的虚拟主机或.htaccess文件。这是通过使用mod_rewrite实现的:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ - [L,G]
最后保存文件。
英文地址:http://www.cyberciti.biz/faq/apache-return-a-http-410-error-resource-permanently-does-not-exist-configuration/
本文地址:http://coderschool.cn/1377.html
转载请注明本文地址和英文原文地址
下一篇:已是最新文章