配色: 字号:
nginx rewrite 参数和例子+常用Rewrite伪静态法则
2016-10-28 | 阅:  转:  |  分享 
  
正则表达式匹配,其中:~为区分大小写匹配~为不区分大小写匹配!~和!~分别为区分大小写不匹配及不区分大小写不匹配文件及目
录匹配,其中:-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……
献花(0)
+1
(本文系雨亭之东首藏)