Nginx实用指南V1 (连载之四:流行CMS博客rewrite写法)

申明:本连载的文章来自:Nginx官网、张 宴BLOG、linuxtone论坛、互联网、本人原创。并尽力在官网文档的基础发表原创作品。并保证文档的质量与错误率。如有作者认为本文有涉及版权问 题请与我联系:

liuyu105#gmail.com。

 

Nginx Rewirte


1. 基本标记、正则、文件与目录
A、基本标记
last - 基本上都用这个Flag。
※相当于Apache里的[L]标记,表示完成rewrite,不再匹配后面的规则
break - 中止Rewirte,不再继续匹配
redirect - 返回临时重定向的HTTP状态302
permanent - 返回永久重定向的HTTP状态301


B、 正则
* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配


C、 文件及目录匹配
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行

2. Discuz/ joomla/drupal

A、 discuz rewrite

  
  
  
  
  1. rewrite ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2 last
  2. rewrite ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3 last
  3. rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page%3D$4&page=$3 last
  4. rewrite ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3 last
  5. rewrite ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3 last
  6. rewrite ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2 last

 

B、 joomla rewrite

  
  
  
  
  1. location / { 
  2. expires 30d; 
  3. error_page 404 = @joomla; 
  4. log_not_found off
  5.  
  6. location @joomla { 
  7. rewrite ^(.*)$ /index.php?q=$1 last

 

C、 drupal rewirte

  
  
  
  
  1. if (!-f $request_filename) { 
  2. rewrite ^(.*)$ /index.php?q=$1 last
  3. break; 
  4.  
  5. if (!-d $request_filename) { 
  6. rewrite ^(.*)$ /index.php?q=$1 last
  7. break; 

4、 Wordpress/ typecho等博客系统写法

A、wordpress rewrite

  
  
  
  
  1. if (-f $request_filename/index.html){ 
  2. rewrite (.*) $1/index.html break; 
  3. if (-f $request_filename/index.php){ 
  4. rewrite (.*) $1/index.php; 
  5. if (!-f $request_filename){ 
  6. rewrite (.*) /index.php; 

 

B、typecho rewrite
 

  
  
  
  
  1. location / { 
  2. index index.html index.php; 
  3. if (-f $request_filename/index.html){ 
  4. rewrite (.*) $1/index.html break; 
  5. if (-f $request_filename/index.php){ 
  6. rewrite (.*) $1/index.php; 
  7. if (!-f $request_filename){ 
  8. rewrite (.*) /index.php; 

参考:http://wiki.nginx.org/NginxConfiguration


 

你可能感兴趣的:(linux,nginx,cms,博客,rewrite)