伪静态技术
Posted zhoupenghui168
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了伪静态技术相关的知识,希望对你有一定的参考价值。
网址和纯静态一样,只是,其内部仍旧需要查询数据库:如果有一个页面,希望这个页面利于seo,但是有不适合使用真静态,比如csdn论坛帖子,可以考虑使用伪静态,即: 形式上是一个静态地址,比如http://www.xxxx.net/news-music-id100.html ,实际 对应的是一个动态地址 http://www.xxxx.net/news.php?type=music&id=100
1.伪静态的实现方式
直接在页面中,使用正则表达式解析完成伪静态
使用apache/nginx自带的rewrite机制来完成伪静态
2.使用正则表达式完成伪静态
正则表达式要注意的地方:由于双引号字符串可以转义更多内容,所以,正则最好使用单引号定义
3.rewrite机制来完成伪静态
3.1 rewrite机制的流程
3.2 rewrite的应用
(1). 图片防盗链
www.csdn.net, www.ls.net: 都指向相同的目录day,有一个静态文件载入了图片资源
上面的rewrite机制的意思是:如果来路不是www.csdn.net就使用重写规则:将图片重新指向到face.png
(2). 简化url请求
http://www.xxx.org/index/login 等价于http://www.xxx.org/index.php?c=index&a=login
扩展一下:
http://www.xxx.org/xxx/yyy 等价于http://www.xxx.org/index.php?c=xxx&a=yyy
解决:
RewriteRule ^index/login$ index.php?c=index&a=login
RewriteRule ^([a-zA-Z_]+)/([a-zA-Z_]+)$ index.php?c=$1&a=$2
(3).如果两个文件有一个不存在,就使用另一个
请求的文件不存在,则请求index.php ,如果存在则访问abc.html
rewriteCond %REQUEST_FILENAME !-f
rewriteCond %REQUEST_FILENAME !-d
RewriteRule abc.html index.php
静态化 - 伪静态技术(PHP正则表达式实现)
效果:
代码:
<?php // + —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— // + 正则表达式,实现伪静态处理 // + url:http://localhost/forgestatic/index.php/news-class12-id43.html // + —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— //设置输出编码 header(‘Content-Type:text/html; charset=utf8‘); //获取参数信息 //参数格式为:‘/news-class12-id43.html‘ $_urlParam = $_SERVER[‘PATH_INFO‘]; // 匹配模式 // 匹配后格式: // Array // ( // [0] => /news-class12-id43.html // [1] => news // [2] => class12 // [3] => class // [4] => 12 // [5] => id43 // [6] => id // [7] => 43 // ) $_pattern = ‘#^/([a-z]+)-(([a-z]+)([0-9]+))-(([a-z]+)([0-9]+))\.html$#‘; //接收数据参数 $_paramArr = array(); //匹配获取 if ( preg_match($_pattern, $_urlParam, $_paramArr) ) { //打印数据 echo ‘<pre>‘; print_r($_paramArr); echo ‘</pre>‘; } else { exit(‘参数格式异常!‘); }
以上是关于伪静态技术的主要内容,如果未能解决你的问题,请参考以下文章
转发:nginx伪静态之try_files和rewrite讲解