申明:本連載的文章來自:Nginx官網、張 宴BLOG、linuxtone論壇、互聯網、本人原創.並儘力在官網文檔的基礎發表原創作品.並保證文檔的質量與錯誤率.如有作者認為本文有涉及版權問 題請與我聯繫: liuyu105#gmail.com. Nginx Rewirte 2. Discuz/ joomla/drupal A、 discuz rewrite
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用來判斷文件是否可執行
B、 joomla rewrite
- location / {
- expires 30d;
- error_page 404 = @joomla;
- log_not_found off;
- }
- location @joomla {
- rewrite ^(.*)$ /index.php?q=$1 last;
- }
C、 drupal rewirte
- if (!-f $request_filename) {
- rewrite ^(.*)$ /index.php?q=$1 last;
- break;
- }
- if (!-d $request_filename) {
- rewrite ^(.*)$ /index.php?q=$1 last;
- break;
- }
4、 Wordpress/ typecho等博客系統寫法
A、wordpress rewrite
- if (-f $request_filename/index.html){
- rewrite (.*) $1/index.html break;
- }
- if (-f $request_filename/index.php){
- rewrite (.*) $1/index.php;
- }
- if (!-f $request_filename){
- rewrite (.*) /index.php;
- }
B、typecho rewrite
- location / {
- index index.html index.php;
- if (-f $request_filename/index.html){
- rewrite (.*) $1/index.html break;
- }
- if (-f $request_filename/index.php){
- rewrite (.*) $1/index.php;
- }
- if (!-f $request_filename){
- rewrite (.*) /index.php;
- }
- }
參考:http://wiki.nginx.org/NginxConfiguration
[火星人 ] Nginx實用指南V1 (連載之四:流行CMS博客rewrite寫法)已經有446次圍觀