解决在静态页面上使用动态参数,造成spider多次和重复抓取的问题
我们在使用百度统计中的SEO建议检查网站时,总是发现“静态页参数”一项被扣了18分,扣分原因是“在静态页面上使用动态参数,会造成spider多次和重复抓取”。一般来说静态页面上使用少量的动态参数的话并不会对spider的抓取造成什么影响,但要是一个网站静态页面上使用的动态参数过多,那么最后就有可能会造成spider多次和重复抓取了。
要解决“在静态页面上使用动态参数,会造成spider多次和重复抓取”这一SEO问题,我们需要用到Robots.txt(机器人协议)来限制百度spider对网站页面的抓取,robots.txt是一个协议,而不是一个命令。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
详解如何通过创建Robots.txt来解决网站被重复抓取,我们只需要设置一个语法。
User-agent: Baiduspider(仅对百度蜘蛛有效)
Disallow: /*?* (禁止访问网站中所有的动态页面)
这样就可以防止动态页面被百度索引,避免出现网站被spider重复抓取了。有些人说:“我的网站是使用伪静态页面的,每个网址html前面都带有?怎么办?” 这种情况的话就使用另一个语法。
User-agent: Baiduspider(仅对百度蜘蛛有效)
allow: .htm$(仅允许访问以".htm"为后缀的URL)
这样就可以让百度蜘蛛只收录你的静态页面,而不索引动态页。其实网站SEO知识还有很多,都需要我们一步一步的去摸索,通过实践去发现真理。注重用户体验的网站才是长久发展的基本点。
禁止网站被搜索抓取的一些方法:
先在站点的根目录下新建一个robots.txt文本文件。当搜索蜘蛛访问这个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索蜘蛛就会先读取这个文件的内容:
文件写法
User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符,user-agent分号后需加空格。
Disallow: / 这里定义是禁止爬寻站点所有的内容
Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录
Disallow: /ABC/ 这里定义是禁止爬寻ABC目录下面的目录
Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以".htm"为后缀的URL(包含子目录)。
Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址
Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片
Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件。
Allow: /cgi-bin/ 这里定义是允许爬寻cgi-bin目录下面的目录
Allow: /tmp 这里定义是允许爬寻tmp的整个目录
Allow: .htm$ 仅允许访问以".htm"为后缀的URL。
Allow: .gif$ 允许抓取网页和gif格式图片
Sitemap: 网站地图 告诉爬虫这个页面是网站地图
下面列出来的是比较出名的搜索引擎蜘蛛名称:
Google的蜘蛛: Googlebot
百度的蜘蛛:baiduspider
Yahoo的蜘蛛:Yahoo Slurp
MSN的蜘蛛:Msnbot
Altavista的蜘蛛:Scooter
Lycos的蜘蛛: Lycos_Spider_(T-Rex)
Alltheweb的蜘蛛: FAST-WebCrawler/
INKTOMI的蜘蛛: Slurp
SOGOU的蜘蛛:Sogou web spider/4.0和Sogou inst spider/4.0
按照以上的说明,我们可以给大案一个示例,以Sogou的来说,禁止抓取的robots.txt代码写法如下:
User-agent: Sogou web spider/4.0
Disallow: /goods.php
Disallow: /category.php
解决在静态页面上使用动态参数,造成spider多次和重复抓取的问题的更多相关文章
- 浅谈在静态页面上使用动态参数,会造成spider多次和重复抓取的解决方案
原因: 早期由于搜索引擎蜘蛛的不完善,蜘蛛在爬行动态的url的时候很容易由于网站程序的不合理等原因造成蜘蛛迷路死循环. 所以蜘蛛为了避免之前现象就不读取动态的url,特别是带?的url 解决方案: 1 ...
- dedecms--将静态页面转化为动态页面
最近在用dedecms二次开发项目,需要对文章内容页设置权限,会员未登录不允许查看,这个需要先在后台设置将静态页面转化为动态页面 具体步骤: 1:将主页设置为动态浏览 2:进入后台→系统→SQL命令行 ...
- 页面上有两个元素id相同,js中如何取值
页面上有两个table,id都是”cont2",现要在js中取到这两个table,改变样式. js实现: var tab2=document.all.cont2(1);var tab=do ...
- 关于线上JVM动态参数设置调优
p.p1 { margin: 0; -webkit-hyphens: auto; font: 16px Arial; color: rgba(68, 68, 68, 1); -webkit-text- ...
- javaweb页面上展示动态图片
HTML <img alt="点击设定" name="CONSTRUCTIONPLANHIS_IMAGE_curr_img_0" src="vi ...
- python解决自动化测试静态页面加载慢的情况
# coding:utf8from selenium import webdriverimport time # 创建一个ChromeOptions的对象option = webdriver.Chro ...
- 浅谈php生成静态页面
一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...
- UGUI OnValueChanged 动态参数指定
在选择方法的时候注意,选择最上面的动态参数的方法.
- 抓取Js动态生成数据且以滚动页面方式分页的网页
代码也可以从我的开源项目HtmlExtractor中获取. 当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢? 如类似今日头条这样的网 ...
随机推荐
- mysql查询正在执行的sql
mysql> SHOW VARIABLES LIKE "general_log%"; +------------------+------------------------ ...
- 用EventEmitter收发消息
下面简单介绍其步骤. <发消息 方> 1.import进EventEmitter import { EventEmitter } from '@angular/core'; 2.在Comp ...
- StreamReader和StreamWriter说明
StreamReader/StreamWriter操作的是字符数据(char),而FileStream操作的是字节数据(byte) FileStream与StreamXXXX类的默认编码都是UTF8, ...
- ArcGIS案例教程-通过点坐标生成矩形
ArcGIS案例教程-通过点坐标生成矩形 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 功能:以点坐标为中心,通过指定尺寸,生成矩形 成果形式:绿色工具,免安装,不 ...
- C++/CLI
[C++/CLI] A C++/CLI application or component uses extensions to C++ syntax (as allowed by the C++ Sp ...
- less,more,view一个文件时中文可以正常显示,可是VI却显示乱码呢?
https://blog.csdn.net/konglongaa/article/details/80590470 登陆后输入export LC_ALL="zh_CN.GB2312" ...
- base64位代码转图片文件并保存到文件夹的解决方案
#region Base64 转图片方法 protected string Base64StringToImage(string strbase64) { try { string imgurl = ...
- Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean) on project
在maven项目中 启动了2个tomcat,只能启动一个.
- Django form表单功能的引用(注册,复写form.clean方法 增加 验证密码功能)
1. 在app下 新建 forms.py 定义表单内容,类型models from django import forms class RegisterForm(forms.Form): userna ...
- sv函数中返回队列
如果想从函数中,返回队列或者动态数组,我们应该怎么做呢? 答案就是自己用typedef定义一个类型. typedef int queue_of_int[$]; function queue_of_in ...