站点页面静态化具体解释

站点页面静态化具体解释

大家好,又见面了,我是全栈君。

     

URL静态化

    静态化一直以来都是最主要的seo要求之中的一个,但近一两年seo行业对是否一定要做静态化有了一些观念上的改变。

  

为什么静态化

  如今的站点绝大多数是数据库驱动,页面由程序实时生成。而不是其的在server上有一个静态html文件存在。当用户訪问一个网址时,程序依据url中的參数调用数据库数据,实时生成页面内容。因此动态页面相相应的url原始状态也是动态的。包括问号、等号及參数,如以下这样的典型论坛的url:

       3w点website点com/viewthread.php?tid=1234&&page=1

搜索引擎在发展初期(2006年—2007年)一般不太愿意爬行和收录动态url,主要原因是可能陷入无限循环或收录大量反复内容。造成资源极大浪费。最典型的无限循环就是某些站点上出现的万年历。非常多博客都按时间存档,一些宾馆、肮班查询站点都常常出现万年历形式。

  

搜索引擎蜘蛛碰到万年历。假设一直跟踪上面的链接,能够不停地点击下一月、下—年,无穷无尽陷入无限循环,每个日期相应的页面内容也没什么差别。真有用户一眼就能看出这是个日历,但搜索引擎蜘蛛面对的仅仅是一串代码,不一定能推断出事实上这是个万年历。

有时就算不存在无限循环。动态url也可能造成大量复制页面。

比方url:

         3w点website点com/viewthread.php?tid=1234&&page=1

和url:

       3w点website点com/viewthread.php?

page=1&&tid=1234
非常可能是全然一样的内容。url中參数顺序不同就是不同的网址,但调用參数一样,因此页面内容是一样的。假设CMS系统设计不周全,这些url都可能出如今站点上。
  更麻烦的是,有时某些參数能够是随意值,server都能正常返回页面,尽管内容全是一样或非常相似的。

比如,上面中的參数1234改为5678或其它什么数字。server非常可能也返回200状态码。
  所以曾经的搜索引擎对动态url敬而远之,要想站点页面被充分收录。站长须要把动态url转化为静态。
如何静态化
   最常见的方法是使用server的url重写模块,在AMPserver上一般使用mod_rewrite模块,Windowsserver也有功能相似的ISAPI等模块。

以LAMPserver为例。要想把url:
       3w点website点com/product.php?id=123
   静态化为:
       3w点website点com/product/=123
   须要启用servermod_rewrite模块,然后在上.hatccess文件里写入例如以下代码:
   RewriteRule/product/([0-9]+)/product.php?id=$1
url重写代码基于正則表達式。每一个站点的动态url结构不同,server设置也可能不同,代码也就不同。正則表達式的写法比較复杂。千变万化,通常须要程序猿编写。

在写url静态化代码时必须很小心,错了一个字符。多了一个斜杠等微小的不同,都可能造成灾难性的后果。
严格来说。这里所说的url静态化应该称为“伪静态化”,也就是说server还是不存在对应的文件,用户訪问时还是动态生成页面,仅仅只是通过url重写技术使网址看起来像是静态的。也有的CMS系统能够实现真正静态化,站长增添产品或文章后,系统会自己主动生成真实存在的静态的html文件。可是对搜索引擎来说,真正的静态与伪静态没有差别。

url不须要静态化吗
  近两三年搜索引擎对动态url的抓取有了非常大进步。一般来说url中有两三个參数,对收录不会造成多大影响。权重高的域名,再多几个问号也不是问题。只是一般来说还是建议将静态化,既能提高用户体验,又能减少收录难度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115627.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c3p0连接池的配置方式

    c3p0连接池的配置方式c3p0的配置方式分为三种,分别是1.setters一个个地设置各个配置项2.类路径下提供一个c3p0.properties文件3.类路径下提供一个c3p0-config.xml文件1.setters一个个地设置各个配置项这种方式最繁琐,形式一般是这样:01Propertiesprops= new Properties();

    2022年6月2日
    43
  • 如何跳过MVC中的ValidateRequest验证

    如何跳过MVC中的ValidateRequest验证
    MVC中客户端传值到服务器端时,如果客户端字符串含有““字样时就会报“检测到有潜在危险”的错误。
    如:从客户端(“test
    ttt”)中检测到有潜在危险的Request.Form值。
    解决办法:在对应的ActionResult前面加上[ValidateInput(false)]就可以解决,去除验证。

     
    下面是一个富文本的页面源码示例:
    <%@PageLanguage="C#"MasterPageFile="~/V

    2022年5月18日
    72
  • 商品搜索引擎—分词(插件介绍与入门实例)

    商品搜索引擎—分词(插件介绍与入门实例)

    2020年11月12日
    187
  • python执行cmd命令并解析结果_python如何打包成可执行程序

    python执行cmd命令并解析结果_python如何打包成可执行程序身为一个编程小白,最近刚刚接手工作。近期在使用pyinstaller的时候,发现了一个很严重的问题,那就是缺少包。当时并不知道,因为代码已经是上任大佬写好的,我可以直接用。先说一下问题吧(图片忘了保存)。执行文件突然死掉,当时手速够快截了一个图。原因是缺少了这么个包。pkg_resources.py2_warn具体的解决方法如下:顺便说一下,pyinstaller的安装方法,很简单。首先打开你的pycharm,然后点击左下角的Terminal之后输入命令 pipinstallpyins

    2022年8月28日
    0
  • react路由配置

    react路由配置包含了LInk跳转以及js触发跳转并传参。这是项目的目录结构,主要的代码都在src目录下,src下面新建一个containers文件夹放我们的一些组件,router文件夹是配置路由用的。按照顺序来写:detail文件夹下的代码importReactfrom’react’classDetailextendsReact.Component{render(){

    2022年6月4日
    40
  • django vue部署_如何远程连接

    django vue部署_如何远程连接Django+Vue实现WebSocket连接

    2022年4月22日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号