伪静态技术

网址和纯静态一样,只是,其内部仍旧需要查询数据库:如果有一个页面,希望这个页面利于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.使用正则表达式完成伪静态

伪静态技术_第1张图片
伪静态技术_第2张图片
正则表达式要注意的地方:由于双引号字符串可以转义更多内容,所以,正则最好使用单引号定义

3.rewrite机制来完成伪静态

3.1 rewrite机制的流程

伪静态技术_第3张图片

3.2 rewrite的应用

(1). 图片防盗链

www.csdn.net, www.ls.net: 都指向相同的目录day,有一个静态文件载入了图片资源
伪静态技术_第4张图片
伪静态技术_第5张图片
上面的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
伪静态技术_第6张图片

(3).如果两个文件有一个不存在,就使用另一个

请求的文件不存在,则请求index.php ,如果存在则访问abc.html
rewriteCond %{REQUEST_FILENAME} !-f
rewriteCond %{REQUEST_FILENAME} !-d
RewriteRule abc.html index.php

你可能感兴趣的:(#,大型网站优化技术,计算机网络,开发语言,伪静态技术,rewrite的应用)