网址和纯静态一样,只是,其内部仍旧需要查询数据库:如果有一个页面,希望这个页面利于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