如何保持全站https并且适应部分蜘蛛的抓取

Attention

1.百度已经解决了这个问题(http://zhanzhang.baidu.com/wiki/494),然而不支持的蜘蛛还是存在的(比如有道等等)。

2.关于设置、获取SSL证书的方法不详细说明,请自行百度。(当然如果真的有要求会写的~)

3.有小伙伴反应cPanel自带的文件管理器不显示.htaccess文件,解决方法是点击文件管理器右上角的设置,勾选“显示隐藏文件(dotfiles)”即可。一般.htaccess文件位于网站根目录内,默认隐藏。

兼容全站https和部分国内引擎蜘蛛一直是让很多人头疼的问题。毫无疑问全站https十分的安全,但是却会影响部分国内引擎蜘蛛的抓取。本片教程就是能做到兼顾两方。

前提:输入http和https都可以访问您网站,而http访问不会自动跳转https。您可以访问您网站的.htaccess文件。

方法:更改.htaccess文件。

首先就是要做到访问全都跳转为https,做到这点不难,网上教程也多的是,所以不详细介绍。唯一要注意的是,https的跳转要排除部分国内引擎蜘蛛。所以我们要增加一个跳转条件(高亮行)。注意,请将www.example.com换成您的网站地址。

#HTTPS的重定向
RewriteCond %{HTTP_USER_AGENT} !(360spider|haosouspider|youdaobot|yodaobot|sogou|sohu-search|easouspider|yisouspider) [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^.*$ https://www.example.com%{REQUEST_URI} [L,R=301]

在你的网站.htaccess文件内添加上述内容(在“RewriteEngine On”行之后添加)。现在可以测试一下了。在chrome中按下F12打开调试窗口。

QQ截图20160212155350

在左下角选择“Network Conditions”Tab页,在下方的“User agent spoofing”内勾选“Custom  user agent”。

QQ截图20160212155410

在下拉选项中选择“Other”,并在下面的编辑框输入部分国内引擎蜘蛛的UA来模拟部分国内引擎蜘蛛的抓取。

百度蜘蛛的UA:

Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

有道蜘蛛UA:

Mozilla/5.0 (compatible; YoudaoBot/1.0; YoudaoBot)

然后在网址栏输入你的网站网址(http访问),如果没有跳转到https访问就说明成功了。并且当选择“Auto user agent”的时候,访问你的网站网址(http访问)可以跳转到https访问,那么第一阶段就成功了。

那么问题来了,如果部分国内引擎蜘蛛https访问怎么破?虽然可能性不大,但是为了保险,我们要再加入以下内容到.htaccess文件里。注意,请将www.example.com换成您的网站地址。

#跳转http判断
RewriteCond %{HTTP_USER_AGENT} (360spider|haosouspider|youdaobot|yodaobot|sogou|sohu-search|easouspider|yisouspider) [NC]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [L,R=301]

注意高亮行,如果没有这行的话将会导致网页重定向循环,请务必注意。现在可以再次测试了,在刚刚的Tab内重新勾选“Custom  user agent”,并尝试https访问,现在是不是成功跳转到http访问了?

最后归纳一下,在.htaccess文件内添加以下内容(在“RewriteEngine On”行之后添加):

#HTTPS的重定向
RewriteCond %{HTTP_USER_AGENT} !(360spider|haosouspider|youdaobot|yodaobot|sogou|sohu-search|easouspider|yisouspider) [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^.*$ https://www.example.com%{REQUEST_URI} [L,R=301]

#跳转http判断
RewriteCond %{HTTP_USER_AGENT} (360spider|haosouspider|youdaobot|yodaobot|sogou|sohu-search|easouspider|yisouspider) [NC]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [L,R=301]

注意,请将www.example.com换成您的网站地址。

那么就是这样,是不是很简单呢?有什么评论或者问题请在下方回复,或到页面右上角的留言板回复。真不行就直接发我邮箱吧:admin@kaaass.net。我会统一在周末回复。

分享到

KAAAsS

喜欢二次元的程序员,喜欢发发教程,或者偶尔开坑。(←然而并不打算填)

相关日志

  1. 没有图片
  2. 没有图片
  3. 没有图片
  4. 没有图片

评论

还没有评论。

在此评论中不能使用 HTML 标签。