伪静态技术

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(‘参数格式异常!‘);
}

 

以上是关于伪静态技术的主要内容,如果未能解决你的问题,请参考以下文章

apache2.4.33伪静态配置入门教程

Nginx伪静态配置和常用Rewrite伪静态规则

Nginx下伪静态规则

转发:nginx伪静态之try_files和rewrite讲解

Apache伪静态(Rewrite).htaccess文件详解

wamp集成环境开启rewrite伪静态支持