一、何为“伪静态”?
以传智播客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就是查询出来的数据是:
- <?php
- $article=array(‘id‘=>1,‘title‘=>‘发布i测试‘,‘content‘=>‘......‘ ......);
- 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(最后一天课程就为正则)