一、何为“伪静态”?

以传智播客bbs论坛为例,这篇帖子的链接地址原本应该是“http://bbs.itcast.cn/forum.php?mod=post&action=newthread&fid=181”,拼接好多参数,是不是看了之后“头疼”?不仅不好看,从seo的角度考虑,这类链接是非常不利于百度收录。所以,传智bbs论坛技术人员使用“伪静态”处理后,上面头疼的链接就是http://bbs.itcast.cn/thread-82858-1-1.html瞬间好看了很多,百度蜘蛛也会非常爱采集。

二、为何会有伪静态技术?

谈到这点,不能不说动态网页和静态网页,更不能不提他们二者优缺点。好了,那么问题来了, 怎么能结合静态网页和动态网页的优点呢?那就是伪静态。伪静态至少有三种优势:1.有 利用SEO 2. 防止sql注入  3. 不产生纯静态文件,因此不增加服务器负担!

静态网页优缺点:
    优点:
    1)静态网页的内容相对稳定,因此容易被搜索引擎检索;
    缺点:
    1)静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;
    2)静态网页的交互性交叉,在功能方面有较大的限制。
    动态网页优缺点:
    优点:
    1)动态网页以数据库技术为基础,可以大大减少降低网站维护的工作量;
    2)采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等;
    缺点:
   
1)动态网页中的“?”对搜索引擎检索存在一定的问题,搜索引擎一般不可能从一个网站的数据库中访问全部网页,或者出于技术方面的考虑,搜索蜘蛛不去抓取
网址中“?”后面的内容,因此采用动态网页的网站在进行搜索引擎推广时需要做一定的技术处理才能适应搜索引擎的要求

当然伪静态也是有自身的缺点,比动态还要占用cpu资源,多一层匹配,每次都数据库查询。 好多人天天念叨效率,
如果是做企业站用个P效率阿? 一共就那么几条信息, 如果是大型网站,
实体文件多了也是蛋疼的事,磁盘I/O更头疼。在我们实际开发中,不希望使用真静态, 但是又希望有利于SEO,那就考虑使用伪静态.

三、如何制作伪静态?

       说个简单例子吧, 比如文章详细页, 正常的调用是 bbs.itcast.cn/index.php?m=article&id=1, 这么不美观。我们要改成伪静态成为这种”bbs.itcast.cn/news/1.html“。

利用$article就是查询出来的数据是:

  1. <?php
  2. $article=array('id'=>1,'title'=>'发布i测试','content'=>'......' ......);
  3. echo "<a href='/news/{$article['id']}.html'>{$article['title']}</a>";

复制代码

提供两种方法!

       nginx 规则

本帖隐藏的内容

rewrite ^/news/([0-9]+)\.html$ /index.php?m=article&id=$1 last;

       apache 的伪静态规则

本帖隐藏的内容

RewriteRule ^news/([0-9]+)\.html$ index.php?m=article&id$1 [L]

四、解释apache 的伪静态为什么这么写?

apache的伪静态写法主要分成4部分,这里大概解释一下 为什么这样写 :

本帖隐藏的内容

RewriteRule 固定这么写,不告诉你为啥
        ^news/([0-9]+)\.html$ 这部分是匹配当前的url地址, 也就是伪静态的地址
        [0-9]+ 表示至少有1个数字,可以是0也可以是无限大
        index.php?m=article&id=$1 这里是指向对应的真实地址
        $1 配对上面的第一个括号, $2匹配第二个以此类推
        [L] L意思是如果此规则匹配,则停止,不在匹配后面的,减少无必要查询 。
        如果无法理解建议查看正则视频教程:http://bbs.itcast.cn/thread-22094-1-1.html(最后一天课程就为正则)

[PHP] PHP初学者想了解"伪静态",必须看这个贴 [复制链接] [推荐]的更多相关文章

  1. 想学习SEO可以看哪些书籍

    http://www.wocaoseo.com/thread-28-1-1.html 除了一些常见的比如入门推荐<走进搜索引擎>和进阶推荐<这就是搜索引擎--核心技术详解>之外 ...

  2. discuz x3在DIY模块中调用伪静态不成功,显示动态链接的解决办法

    discuz x3在DIY模块中调用伪静态不成功,显示动态链接,然而其他的链接正常显示伪静态. 后台启用伪静态后,发现论坛版块.帖子点击链接,伪静态正常显示,然后在门户首页DIY显示的帖子,点进去后发 ...

  3. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:让按钮看起来像个链接 (仍然保留按钮行为)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 模板题 codevs 1993 草地排水 想学习的请看链接

    不能再水的题了. Dinic算法,比EK更快. 想要学习请看链接   https://comzyh.com/blog/archives/568/ 并附上我的模板(其实和comzyh大神的一样) #in ...

  5. 上周面试回来后写的Java面试总结,想进BAT必看

    上周陪同之前一起工作的同事去面试(乔治,小袁,鹏飞(面试人)),第一站是去深圳,第二站上海,第三站杭州.面试什么公司我在这里就不多说了,你们知道是一线公司就行.其实本来真的没打算写这篇文章,主要是自己 ...

  6. 从蓝瘦“想哭”到 SELinux 看操作系统安全何在

    最近一周,来自网络的"想哭"勒索病毒(Wannacry Ransomware)在世界各地同时上演了一部绑匪大片,台词华丽,演技出色,当仁不让地新晋世界第一网红.全球各国除了默默忙于 ...

  7. 吐血推荐,想进BAT必看

    不必太纠结于当下,也不必太忧虑未来,人生没有无用的经历,当你经历过一些事情后,眼前的风景已经和从前不一样了.--村上春树 一.包含如下内容 ActiveMQ消息中间件面试专题 BAT80道面试题 BA ...

  8. 想要学好JQuery看这里

    一.简介 jQuery 库可以通过一行简单的标记被添加到网页中 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操 ...

  9. 用java制作日历,想休息的时候看一看离周末还有几天!

    呀!忙碌的每一天,都忘记了明天就是我们愉快周末了.今天没有朋友的闲聊的话,明天处在绷紧的状态呢!还有朋友提到,所有今天来跟大家分享一下用java来编写日历表,累了想休息了的时候,打开看看,还有几天到周 ...

随机推荐

  1. javascript事件小结(事件处理程序方式)--javascript高级程序设计笔记

    1.事件流:描述的是从页面中接收事件的顺序. 2.事件冒泡:IE的事件流叫做事件冒泡,即事件开始从具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到不具体的节点(文档). 3.事件捕获 ...

  2. CPU核心数

    Process.ProcessorAffinity 属性: public IntPtr ProcessorAffinity { get; set; }属性值:位掩码,表示关联进程内的线程可以在其上运行 ...

  3. str系列---字符串函数

    1. strcat extern char *strcat(char *dest,char *src); 把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'. 返回指 ...

  4. cad画指定大小矩形

    指定基点后输入(@长度,宽度)回车 举例:如你要画个600*300的矩形 则输入@600,300回车

  5. Android中pendingIntent的深入理解

    pendingIntent字面意义:等待的,未决定的Intent.要得到一个pendingIntent对象,使用方法类的静态方法 getActivity(Context, int, Intent, i ...

  6. php导出CSV时,超长数字精度丢失问题与前导0的字符串丢失0的问题解决

    php生成的CSV有时候会遇到两个特殊情况: 1.输出的字段中,含有超长数字(18位的数字)比方身份证:122121197410180016,就算输出时字段加上"",还是会被识别成 ...

  7. Sicily 4495. Print permutations

    http://soj.me/4495 按字典序生成字符串的全排列 直接递归: #include <iostream> #include <string> #include &l ...

  8. XML编程与应用-读取XML

    实例:使用XmlTextReader类的对象读取XML文档 代码如下 using System; using System.Collections.Generic; using System.Linq ...

  9. [转载]VMWare网络连接透析

    http://blog.csdn.net/struggleyb/article/details/1102214 以前在学校,VMWare里面的Gentoo Linux是采用network bridge ...

  10. iOS开发蓝牙 蓝牙4.0的各种踩过的坑,希望你们少踩点

    1.首先建立这个三个参数 @property (nonatomic,strong)CBCentralManager * manager; @property (nonatomic,strong)CBP ...