正则表达式匹配

 ~         #区分大小写匹配
 ~*     #不区分大小写匹配
!~和!~*    分别为区分大小写不匹配,不区分大小写不匹配

文件和目录变量匹配

加了!就取反

-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真 
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真 
-w filename 如果 filename可写,则为真 
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为

flag标记

 last 相当于Apache里的[L]标记,表示完成rewrite
 break 终止匹配, 不再匹配后面的规则
 redirect 返回302临时重定向 地址栏会显示跳转后的地址
 permanent 返回301永久重定向 地址栏会显示跳转后的地址

全局变量

$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri

实例

#目录转成参数
/sort/2/ => /index.php?act=sort&id=2
if ($host ~* (.*)/.domain/.com) { #匹配域名 
    rewrite ^/(\w+)/(/d+)?$ /index.php?act=$1&id=$2 last; 
}