文档详情

nginx+rewrite参数.doc

发布:2017-02-26约字共8页下载文档
文本预览下载声明
nginx rewrite参数详解 2009-07-26 22:08 正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在目录 * -e和!-e用来判断是否存在文件或目录 * -x和!-x用来判断文件是否可执行 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=sortname=abcid=2 if ($host ~* (.*)\.domain\.com) { set $sub_name $1; rewrite ^/sort\/(\d+)\/?$ /index.php?act=sortcid=$sub_nameid=$1 last; } 测试可惜不能用else,另外,也不知如何测试重定向的部分条件打印输出。 只能通过重新生效配置之后查看效果才能知道ok与否。唉,菜鸟献上,大虾指点 续: 结合QeePHP的例子 if (!-d $request_filename) { rewrite ^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$ /index.php?namespace=useramp;controller=$1amp;action=$2amp;$3 last; rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=useramp;controller=$1 last; break; 多目录转成参数 /sort/2 = /index.php?act=sortname=abcid=2 if ($host ~* (.*)\.domain\.com) { set $sub_name $1; rewrite ^/sort\/(\d+)\/?$ /index.php?act=sortcid=$sub_nameid=$1 last; } 目录对换 /123456/xxxx - /xxxx?id=123456 rewrite ^/(\d+)/(.+)/ /$2?id=$1 last; 例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下: if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /nginx-ie/$1 break; } 目录自动加“/” if (-d $request_filename){ rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent; } 禁止htaccess location ~/\.ht { deny all; } 禁止多个目录 location ~ ^/(cron|templates)/ { deny all; break; } 禁止以/data开头的文件 可以禁止/data/下多级目录下.log.txt等请求; location ~ ^/data { deny all; } 禁止单个目录 不能禁止.log.txt能请求 location /searchword/cron/ { deny all; } 禁止单个文件 location ~ /data/sql/data.sql { deny all; } 给favicon.ico和robots.txt设置过期时间; 这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志 location ~(favicon.ico) { ??
显示全部
相似文档