正则表达式匹配,其中:~为区分大小写匹配~为不区分大小写匹配!~和!~分别为区分大小写不匹配及不区分大小写不匹配文件及目 录匹配,其中:-f和!-f用来判断是否存在文件-d和!-d用来判断是否存在目录-e和!-e用来判断是否存在文件或目录 -x和!-x用来判断文件是否可执行flag标记有:last相当于Apache里的[L]标记,表示完成rewritebr eak终止匹配,不再匹配后面的规则redirect返回302临时重定向地址栏会显示跳转后的地址permanent 返回301永久重定向地址栏会显示跳转后的地址一些可用的全局变量有,可以用做条件判断(待补全)$args$content_leng th$content_type$document_root$document_uri$host$http_user_agent$h ttp_cookie$limit_rate$request_body_file$request_method$remote_add r$remote_port$remote_user$request_filename$request_uri$query_stri ng$scheme$server_protocol$server_addr$server_name$server_port$uri 结合QeePHP的例子if(!-d$request_filename){rewrite^/([a-z-A-Z]+)/([a -z-A-Z]+)/?(.)$/index.php?namespace=user&controller=$1& action=$2&$3last;rewrite^/([a-z-A-Z]+)/?$/index.php?namesp ace=user&controller=$1last;break;多目录转成参数abc.domian.com/sort/ 2=>abc.domian.com/index.php?act=sort&name=abc&id=2if($host~ (.)/.domain/.com){set$sub_name$1;rewrite^/sort//(/d+)//?$/i ndex.php?act=sort&cid=$sub_name&id=$1last;}目录对换/123456/xxxx->/ xxxx?id=123456rewrite^/(/d+)/(.+)//$2?id=$1last;例如下面设定nginx在用户 使用ie的使用重定向到/nginx-ie目录下:if($http_user_agent~MSIE){rewrite^(. )$/nginx-ie/$1break;}目录自动加“/”if(-d$request_filename){rewrite ^/(.)([^/])$http://$host/$1$2/permanent;}禁止htaccesslocation~ //.ht{?denyall;?}禁止多个目录location~^/(cron|templates)/{?denyal l;break;?}禁止以/data开头的文件可以禁止/data/下多级目录下.log.txt等请求;location~^/d ata{?denyall;?}禁止单个目录不能禁止.log.txt能请求location/searchword/cron/ {?denyall;?}禁止单个文件location~/data/sql/data.sql{?denyall;?}给fa vicon.ico和robots.txt设置过期时间;这里为favicon.ico为99天,robots.txt为7天并不记录40 4错误日志location~(favicon.ico){log_not_foundoff;expires99d;brea k;?}??location~(robots.txt){log_not_foundoff;expires7d;break ;?}设定某个文件的过期时间;这里为600秒,并不记录访问日志location^~/html/scripts/loadhead _1.js{access_log??off;root/opt/lampp/htdocs/web;expires600; break;?}文件反盗链并设置过期时间这里的return412为自定义的http状态码,默认为403,方便找出正确的盗链的请 求“rewrite^/http://leech.c1gstudio.com/leech.gif;”显示一张防盗链图片“acce ss_logoff;”不记录访问日志,减轻压力“expires3d”所有文件3天的浏览器缓存location~^.+/. (jpg|jpeg|gif|png|swf|rar|zip|css|js)${valid_referersnoneblock ed.c1gstudio.com.c1gstudio.netlocalhost208.97.167.194;if($ invalid_referer){rewrite^/http://leech.c1gstudio.com/leech.gi f;return412;break;}access_log??off;root/opt/lampp/htdocs/w eb;expires3d;break;?}只充许固定ip访问网站,并加上密码root?/opt/htdocs/www;allo w??208.97.167.194;allow??222.33.1.2;allow??231.152.49.4;deny? ?all;auth_basic"C1G_ADMIN";auth_basic_user_filehtpasswd;将多级目录下 的文件转成一个文件,增强seo效果/job-123-456-789.html指向/job/123/456/789.htmlrew rite^/job-([0-9]+)-([0-9]+)-([0-9]+)/.html$/job/$1/$2/jobshow_$ 3.htmllast;将根目录下某个文件夹指向2级目录如/shanghaijob/指向/area/shanghai/如果你将 last改成permanent,那么浏览器地址栏显是/location/shanghai/rewrite^/([0-9a-z]+ )job/(.)$/area/$1/$2last;上面例子有个问题是访问/shanghai时将不会匹配rewrite^/ ([0-9a-z]+)job$/area/$1/last;rewrite^/([0-9a-z]+)job/(.)$/ar ea/$1/$2last;这样/shanghai也可以访问了,但页面中的相对链接无法使用,如./list_1.html真实地址 是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。那我加上自动跳转也是不行咯(- d$request_filename)它有个条件是必需为真实目录,而我的rewrite不是的,所以没有效果if(-d$req uest_filename){rewrite^/(.)([^/])$http://$host/$1$2/permanent ;}知道原因后就好办了,让我手动跳转吧rewrite^/([0-9a-z]+)job$/$1job/permanent;re write^/([0-9a-z]+)job/(.)$/area/$1/$2last;文件和目录不存在的时候重定向:if( !-e$request_filename){proxy_passhttp://127.0.0.1;}域名跳转server{ listen????80;server_name?jump.c1gstudio.com;indexindex.ht mlindex.htmindex.php;root?/opt/lampp/htdocs/www;rewrite^/h ttp://www.c1gstudio.com/;access_log?off;}多域名转向server_name?www .c1gstudio.comwww.c1gstudio.net;indexindex.htmlindex.htminde x.php;root?/opt/lampp/htdocs;if($host~"c1gstudio/.net"){rew rite^(.)http://www.c1gstudio.com$1permanent;}三级域名跳转if($http_ host~"^(.)/.i/.c1gstudio/.com$"){rewrite^(.)http://top.yi ngjiesheng.com$1;break;}域名镜向server{listen????80;server_name ?mirror.c1gstudio.com;indexindex.htmlindex.htmindex.php;roo t?/opt/lampp/htdocs/www;rewrite^/(.)http://www.c1gstudio.com /$1last;access_log?off;}某个子目录作镜向location^~/zhaopinhui{rew rite^.+http://zph.c1gstudio.com/last;break;?}discuzucenterh ome(uchome)rewriterewrite^/(space|network)-(.+)/.html$/$1.php ?rewrite=$2last;rewrite^/(space|network)/.html$/$1.phplast;re write^/([0-9]+)$/space.php?uid=$1last;discuz7rewriterewrite ^(.)/archiver/((fid|tid)-[/w/-]+/.html)$$1/archiver/index.php?$ 2last;rewrite^(.)/forum-([0-9]+)-([0-9]+)/.html$$1/forumdispl ay.php?fid=$2&page=$3last;rewrite^(.)/thread-([0-9]+)-([0-9]+) -([0-9]+)/.html$$1/viewthread.php?tid=$2&extra=page/%3D$4&page=$ 3last;rewrite^(.)/profile-(username|uid)-(.+)/.html$$1/viewpr o.php?$2=$3last;rewrite^(.)/space-(username|uid)-(.+)/.html$$ 1/space.php?$2=$3last;rewrite^(.)/tag-(.+)/.html$$1/tag.php?n ame=$2last;给discuz某版块单独配置域名server_name?bbs.c1gstudio.comnews.c 1gstudio.com;??location=/{if($http_host~news/.c1gstudio.co m$){rewrite^.+http://news.c1gstudio.com/forum-831-1.htmllast ;break;}?}discuzucenter头像rewrite优化location^~/ucenter{?loc ation~./.php?$?{#fastcgi_pass?unix:/tmp/php-cgi.sock;fastcg i_pass?127.0.0.1:9000;fastcgi_indexindex.php;includefcgi.con f;?}??location/ucenter/data/avatar{log_not_foundoff;access_log ??off;location~/(.)_big/.jpg${error_page404/ucenter/image s/noavatar_big.gif;}location~/(.)_middle/.jpg${error_page40 4/ucenter/images/noavatar_middle.gif;}location~/(.)_small/.jp g${error_page404/ucenter/images/noavatar_small.gif;}expires3 00;break;?}}jspacerewritelocation~./.php?${?#fastcgi_pass? unix:/tmp/php-cgi.sock;?fastcgi_pass?127.0.0.1:9000;?fastcgi_ind exindex.php;?includefcgi.conf;}?location~^/index.php/{?re write^/index.php/(.)/index.php?$1break;?fastcgi_pass?127.0.0 .1:9000;?fastcgi_indexindex.php;?includefcgi.conf;}信赖此刻大部门用Lin uxVPS的伴侣都在利用这个敏捷传布的Nginx,本日就清算一下最常见的PHP法式的Rewrite(伪静态法则)。Wordpre ss:location/{indexindex.htmlindex.php;if(-f$request_filenam e/index.html){rewrite(.)$1/index.htmlbreak;}if(-f$request_f ilename/index.php){rewrite(.)$1/index.php;}if(!-f$request_fi lename){rewrite(.)/index.php;}}PHPCMS:location/{###以下为PHPCMS 伪静态化rewrite法则rewrite^(.)show-([0-9]+)-([0-9]+)\.html$$1/show. php?itemid=$2&page=$3;rewrite^(.)list-([0-9]+)-([0-9]+)\.html$ $1/list.php?catid=$2&page=$3;rewrite^(.)show-([0-9]+)\.html$$1 /show.php?specialid=$2;####以下为PHPWind伪静态化rewrite法则rewrite^(.)- htm-(.)$$1.php?$2last;rewrite^(.)/simple/([a-z0-9\_]+\.html) $$1/simple/index.php?$2last;}ECSHOP:if(!-e$request_filename){ rewrite"^www.mntuku.cn/index.php"/index.phplast;rewrite"^/cat egory$"/index.phplast;rewrite"^/feed-c([0-9]+)\.xml$”/feed.ph p?cat=$1last;rewrite“^/feed-b([0-9]+)\.xml$”/feed.php?brand=$1 last;rewrite“^/feed\.xml$”/feed.phplast;rewrite“^/category-( [0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-])-([0-9]+)-(. +)-([a-zA-Z]+)(.)\.html$”/category.php?id=$1&brand=$2&price_min =$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8last;rew rite“^/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr( [^-])(.)\.html$”/category.php?id=$1&brand=$2&price_min=$3&pric e_max=$4&filter_attr=$5last;rewrite“^/category-([0-9]+)-b([0-9] +)-([0-9]+)-(.+)-([a-zA-Z]+)(.)\.html$”/category.php?id=$1&bran d=$2&page=$3&sort=$4&order=$5last;rewrite“^/category-([0-9]+)-b ([0-9]+)-([0-9]+)(.)\.html$”/category.php?id=$1&brand=$2&page=$ 3last;rewrite“^/category-([0-9]+)-b([0-9]+)(.)\.html$”/catego ry.php?id=$1&brand=$2last;rewrite“^/category-([0-9]+)(.)\.html $”/category.php?id=$1last;rewrite“^/goods-([0-9]+)(.)\.html” /goods.php?id=$1last;rewrite“^/article_cat-([0-9]+)-([0-9]+)-(. +)-([a-zA-Z]+)(.)\.html$”/article_cat.php?id=$1&page=$2&sort=$3 &order=$4last;rewrite“^/article_cat-([0-9]+)-([0-9]+)(.)\.html $”/article_cat.php?id=$1&page=$2last;rewrite“^/article_cat-([0 -9]+)(.)\.html$”/article_cat.php?id=$1last;rewrite“^/article- ([0-9]+)(.)\.html$”/article.php?id=$1last;rewrite“^/brand-([0 -9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html”/brand.php?id=$1 &cat=$2&page=$3&sort=$4&order=$5last;rewrite“^/brand-([0-9]+)-c ([0-9]+)-([0-9]+)(.)\.html”/brand.php?id=$1&cat=$2&page=$3last ;rewrite“^/brand-([0-9]+)-c([0-9]+)(.)\.html”/brand.php?id=$1& cat=$2last;rewrite“^/brand-([0-9]+)(.)\.html”/brand.php?id=$1 last;rewrite“^/tag-(.)\.html”/search.php?keywords=$1last;rew rite“^/snatch-([0-9]+)\.html$”/snatch.php?id=$1last;rewrite“^ /group_buy-([0-9]+)\.html$”/group_buy.php?act=view&id=$1last;re write“^/auction-([0-9]+)\.html$”/auction.php?act=view&id=$1las t;rewrite“^/exchange-id([0-9]+)(.)\.html$”/exchange.php?id=$1& act=viewlast;rewrite“^/exchange-([0-9]+)-min([0-9]+)-max([0-9]+ )-([0-9]+)-(.+)-([a-zA-Z]+)(.)\.html$”/exchange.php?cat_id=$1&i ntegral_min=$2&integral_max=$3&page=$4&sort=$5&order=$6last;rewr ite^/exchange-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.)\.html$”/ex change.php?cat_id=$1&page=$2&sort=$3&order=$4last;rewrite“^/exc hange-([0-9]+)-([0-9]+)(.)\.html$”/exchange.php?cat_id=$1&page= $2last;rewrite“^/exchange-([0-9]+)(.)\.html$”/exchange.php?ca t_id=$1last;}SHOPEX:location/{if(!-e$request_filename){rewr ite^/(.+\.(html|xml|json|htm|php|jsp|asp|shtml))$/index.php?$1 last;}}SaBlog2.0:#只带月份的归档rewrite"^/date/([0-9]{6})/?([0-9]+)?/ ?$"/index.php?action=article&setdate=$1&page=$2last;#无分类翻页rewr ite^/page/([0-9]+)?/?$/index.php?action=article&page=$1last;# 分类rewrite^/category/([0-9]+)/?([0-9]+)?/?$/index.php?action=art icle&cid=$1&page=$2last;rewrite^/category/([^/]+)/?([0-9]+)?/?$ /index.php?action=article&curl=$1&page=$2last;#归档、高级搜刮rewrite ^/(archives|search|article|links)/?$/index.php?action=$1last;# 全数批评、标签列表、引用列表带分页rewrite^/(comments|tagslist|trackbacks|article )/?([0-9]+)?/?$/index.php?action=$1&page=$2last;#tagsrewrite^ /tag/([^/]+)/?([0-9]+)?/?$/index.php?action=article&item=$1&page =$2last;#文章rewrite^/archives/([0-9]+)/?([0-9]+)?/?$/index.php ?action=show&id=$1&page=$2last;#RSSrewrite^/rss/([0-9]+)?/?$ /rss.php?cid=$1last;rewrite^/rss/([^/]+)/?$/rss.php?url=$1las t;#用户rewrite^/uid/([0-9]+)/?([0-9]+)?/?$/index.php?action=art icle&uid=$1&page=$2last;rewrite^/user/([^/]+)/?([0-9]+)?/?$/in dex.php?action=article&user=$1&page=$2last;#舆图文件rewritesitemap .xmlsitemap.phplast;#自界说链接rewrite^(.)/([0-9a-zA-Z\-\_]+)/?([ 0-9]+)?/?$$1/index.php?action=show&alias=$2&page=$3last;Discuz 7:rewrite^/archiver/((fid|tid)-[\w\-]+\.html)$/archiver/index.p hp?$1last;rewrite^/forum-([0-9]+)-([0-9]+)\.html$/forumdisplay .php?fid=$1&page=$2last;rewrite^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$/viewthread.php?tid=$1&extra=page\%3D$3&page=$2last;rewrite^/space-(username|uid)-(.+)\.html$/space.php?$1=$2last;rewrite^/tag-(.+)\.html$/tag.php?name=$1last;Typecho:location/{indexindex.htmlindex.php;if(-f$request_filename/index.html){rewrite(.)$1/index.htmlbreak;}if(-f$request_filename/index.php){rewrite(.)$1/index.php;}if(!-f$request_filename){rewrite(.)/index.php;}}4.8.5shopex?启用伪静态……location/{if(!-e$request_filename){rewrite^/(.)$/index.php?$1last;}}……?1.?启用伪静态……##beginaddbyguozhenbin20100727(usePseudo-static)location/{if(!-e$request_filename){rewrite^/(.)$/index.php?$1last;}}##endaddbyguozhenbin20100727…… |
|