伪静态

伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是为了实时的显示一些信息,就损失了对搜索引擎的友好面。
伪静态即是网站本身是动态网页,url后有"?"加参数来读取不同数据,伪静态就是做url重写操作(rewrite)。开启伪静态后,动态网页即被转换重写成静态网页类型页面,通过浏览器访问伪静态地址和真的静态页面没区别。
但是做伪静态的前提就是服务器要支持伪静态重写URL Rewrite功能

考虑搜索引擎优化(即SEO),经过重写,使用伪静态来将动态网页后缀变为html的静态页面格式。伪静态是一种可以把文件后缀改成任何可能的一种方法,比如如果想把php文件伪静态成html文件。

www.test.com/jk/fd.php?=12
将这样的动态网页处理成
www.test.com/jk-fd-12.html

nginx配置伪静态

http://www.test.com/news/123456.htmlhttp://www.test.com/news.html?id=123456

配置如下:

rewrite ^/p/(\d+).html    http://www.test.com/news.html?id=$1 last;
\d
http://www.kevin.com/p/123456.htmlhttp://a.aa.com/p/news.html?id=123456

通过伪静态配置,可将各类带参数的url解析为伪静态网址

// 带参数url
http://www.test.com/test/age/18
http://www.test.com/test/index.html?name=yangxignyi&age=18
//伪静态url
http://www.test.com/test-yangxignyi-18.html

// nginx配置
rewrite test-(\w+)-(\d+).html /index.html?name=$1&age=$2 last;

location中的rewrite,不写last和break,那么流程就是依次执行这些rewrite

  • rewrite btrak:表示url重写后,直接使用当前资源,不再执行location里余下的语句,完成本次请求后,地址url不变。
  • rewrite
    last:表示url重写后,马上发起一个新的请求,再次进入server块,重试location匹配,超过10次匹配不到就报500错误,地址栏url不变。
  • rewrite redirect:表示返回302临时重定向,地址栏显示重定向后的url,爬虫不会重写url,因为是临时。
  • rewrite permanent:表示返回301永久重定向,地址栏显示重定向后的url,爬虫重写url

nginx配置

// 监听80端口
//访问www.test.com/wangla.html跳转到百度
//访问www.test.com/纯数字至少一个数字.html跳转到QQ官网
//访问www.test.com/匹配字母或数字或下划线组合.html 跳转到百度对应页面。
server {
    listen       80;
    server_name      www.test.com;
    index    index.html index.htm index.php;
 
    rewrite  ^/wangla.html$  http://www.baidu.com/ permanent;
    rewrite  ^/(\d+).html$   http://www.qq.com/ permanent;
    rewrite  ^/(\w+).html$   http://www.baidu.com/index_wd_v5.html permanent;
}