Nginx下wp-super-cache的mod_rewrite规则

基于Nginx的Wordpress博客启用wp-super-cache插件Mod rewrite模式的规则

location / {
           # 如果请求的文件已存在,直接返回
           if (-f $request_filename) {
               break;
           }
           set $supercache_file '';
           set $supercache_uri $request_uri;
           set $supercache 1;
           set $ihttp_host '';
 
           if ($request_method = POST) {
               set $supercache 0;
           }
 
           # 仅在访问文章永久链接时使用静态文件,请求中带参数则不使用静态缓存
           set $qs 0;
           if ($query_string) {
               set $qs 1;
           }
 
           # 不过从 twitter, facebook, feedburner 链接点过来的,总是带参数,这些访问仍然可以使用静态文件
           if ($query_string ~* "^utm_source=([^&]+)&utm_medium([^&]+)&utm_campaign=([^&]+)(&utm_content=([^&]+))?$") {
               set $qs 0;
               set $supercache_uri $document_uri;
           }
           #deactivate on high load
           if ($qs = 1) {
               set $supercache 0;
           }
           # 针对已登录用户(发表过评论),可以不静态化。在访问量高峰时可注释掉
           if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
               set $supercache 0;
           }
 
           # 支持移动设备,访问移动版本的网页缓存
           if ($http_user_agent ~* '(iphone|ipod|aspen|incognito|webmate|android|dream|cupcake|froyo|blackberry9500|blackberry9520|blackberry9530|blackberry9550|blackberry 9800|webos|s8000|bada)') {
                set $ihttp_host '-mobile';
           }
 
           # 指定静态缓存文件的路径
           if ($supercache = 0) {
                set $supercache_uri '';
           }
           if ($supercache_uri ~ ^(.+)$) {
               set $supercache_file /wp-content/cache/supercache/$http_host$1/index${ihttp_host}.html;
           }
 
           # 只有当缓存文件存在时,才进行 rewrite
           if (-f $document_root$supercache_file) {
               #rewrite ^(.*)$ $supercache_file break;
               rewrite ^ $supercache_file last;
           }
 
           # 所有其他请求,转给 wordpress 处理
           if (!-e $request_filename) {
               rewrite . /index.php last;
           }

然后在回到WP Super Cache设置界面,跟往常一行开启Mod rewrite缓存模式即可,虽然插件会提示Mod rewrite模块丢失,但并不影响缓存页面的访问:
20150717182831
要验证效果,很简单,直接访问文章页面,查看源代码即可:
20150717184208

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 71 queries in 0.381 seconds