(2)只能對域名後邊的除參數外的字符串起做用php
例如 http://z.com/a/we/index.php?id=1,只對/a/we/index.php重寫,也就是 regex 匹配的是 /a/we/index.php 這個字符串html
示例 (1)若是是IE瀏覽器發出的請求,就把請求轉到ie目錄下 if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /ie/$1 break; } (2)對形如/images/bla_500x400.jpg的文件請求,重寫到/resizer/bla.jpg?width=500&height=400地址 rewrite ^/images/(.*)_(\d+)x(\d+)\.(png|jpg|gif)$ /resizer/$1.$4?width=$2&height=$3? last; 這裏適用了標誌位-last,意思是這是最後一條rewrite規則 (3)域名跳轉 server { listen 80; server_name jump.test.com; index index.html index.htm index.php; root /opt/www; rewrite ^/ http://www.test.com/; } (4)把符合規則的目錄轉換到其餘目錄 rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2; (5)將文件名轉成多級目錄下的文件 例如 /job-123-456-789.html 指向/job/123/456/789.html rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html last; flag標誌位 last : 至關於Apache的[L]標記,表示完成rewrite break : 中止執行當前虛擬主機的後續rewrite指令集 redirect : 返回302臨時重定向,地址欄會顯示跳轉後的地址 permanent : 返回301永久重定向,地址欄會顯示跳轉後的地址 last和break的區別 last不終止重寫後的url匹配,即新的url會再從server走一遍匹配流程,而break終止重寫後的匹配