Home / 电脑 / nginx rewrite 伪静态配置参数详细说明

nginx rewrite 伪静态配置参数详细说明

nginx rewrite 伪静态配置参数和使用例子 附正则使用说明

正则表达式匹配,其中:

  1. * ~ 为区分大小写匹配
  2. * ~* 为不区分大小写匹配
  3. * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配,其中:

  1. * -f和!-f用来判断是否存在文件
  2. * -d和!-d用来判断是否存在目录
  3. * -e和!-e用来判断是否存在文件或目录
  4. * -x和!-x用来判断文件是否可执行

flag标记有:

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

一些可用的全局变量有,可以用做条件判断(待补全)

  1. $args
  2. $content_length
  3. $content_type
  4. $document_root
  5. $document_uri
  6. $host
  7. $http_user_agent
  8. $http_cookie
  9. $limit_rate
  10. $request_body_file
  11. $request_method
  12. $remote_addr
  13. $remote_port
  14. $remote_user
  15. $request_filename
  16. $request_uri
  17. $query_string
  18. $scheme
  19. $server_protocol
  20. $server_addr
  21. $server_name
  22. $server_port
  23. $uri

结合QeePHP的例子

  1. if (!-d $request_filename) {
  2. rewrite ^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$ /index.php?namespace=user&controller=$1&action=$2&$3 last;
  3. rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=user&controller=$1 last;
  4. break;

多目录转成参数 abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2

  1. if ($host ~* (.*)\.domain\.com) {
  2. set $sub_name $1;
  3. rewrite ^/sort\/(\d+)\/?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
  4. }

目录对换 /123456/xxxx -> /xxxx?id=123456

  1. rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;

例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:

  1. if ($http_user_agent ~ MSIE) {
  2. rewrite ^(.*)$ /nginx-ie/$1 break;
  3. }

目录自动加“/”

  1. if (-d $request_filename){
  2. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  3. }

禁止htaccess

  1. location ~/\.ht {
  2. deny all;
  3. }

禁止多个目录

  1. location ~ ^/(cron|templates)/ {
  2. deny all;
  3. break;
  4. }

禁止以/data开头的文件 可以禁止/data/下多级目录下.log.txt等请求;

  1. location ~ ^/data {
  2. deny all;
  3. }

禁止单个目录 不能禁止.log.txt能请求

  1. location /searchword/cron/ {
  2. deny all;
  3. }

禁止单个文件

  1. location ~ /data/sql/data.sql {
  2. deny all;
  3. }

给favicon.ico和robots.txt设置过期时间; 这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志

  1. location ~(favicon.ico) {
  2. log_not_found off;
  3. expires 99d;
  4. break;
  5. }
  6. location ~(robots.txt) {
  7. log_not_found off;
  8. expires 7d;
  9. break;
  10. }

设定某个文件的过期时间;这里为600秒,并不记录访问日志

  1. location ^~ /html/scripts/loadhead_1.js {
  2. access_log off;
  3. root /opt/lampp/htdocs/web;
  4. expires 600;
  5. break;
  6. }

文件反盗链并设置过期时间 这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求 “rewrite ^/ http://leech.c1gstudio.com/leech.gif;”显示一张防盗链图片 “access_log off;”不记录访问日志,减轻压力 “expires 3d”所有文件3天的浏览器缓存

  1. location ~* ^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
  2. valid_referers none blocked *.c1gstudio.com *.c1gstudio.net localhost 208.97.167.194;
  3. if ($invalid_referer) {
  4. rewrite ^/ http://leech.c1gstudio.com/leech.gif;
  5. return 412;
  6. break;
  7. }
  8. access_log off;
  9. root /opt/lampp/htdocs/web;
  10. expires 3d;
  11. break;
  12. }

只充许固定ip访问网站,并加上密码

  1. root /opt/htdocs/www;
  2. allow 208.97.167.194;
  3. allow 222.33.1.2;
  4. allow 231.152.49.4;
  5. deny all;
  6. auth_basic “C1G_ADMIN”;
  7. auth_basic_user_file htpasswd;

将多级目录下的文件转成一个文件,增强seo效果 /job-123-456-789.html 指向/job/123/456/789.html

  1. rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html last;

将根目录下某个文件夹指向2级目录 如/shanghaijob/ 指向 /area/shanghai/ 如果你将last改成permanent,那么浏览器地址栏显是/location/shanghai/

  1. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;

上面例子有个问题是访问/shanghai 时将不会匹配

  1. rewrite ^/([0-9a-z]+)job$ /area/$1/ last;
  2. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;

这样/shanghai 也可以访问了,但页面中的相对链接无法使用, 如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。

那我加上自动跳转也是不行咯 (-d $request_filename)它有个条件是必需为真实目录,而我的rewrite不是的,所以没有效果

  1. if (-d $request_filename){
  2. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  3. }

知道原因后就好办了,让我手动跳转吧

  1. rewrite ^/([0-9a-z]+)job$ /$1job/ permanent;
  2. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;

文件和目录不存在的时候重定向:

  1. if (!-e $request_filename) {
  2. proxy_pass http://127.0.0.1;
  3. }

域名跳转

  1. server
  2. {
  3. listen 80;
  4. server_name jump.c1gstudio.com;
  5. index index.html index.htm index.php;
  6. root /opt/lampp/htdocs/www;
  7. rewrite ^/ http://www.c1gstudio.com/;
  8. access_log off;
  9. }

多域名转向

  1. server_name www.c1gstudio.com www.c1gstudio.net;
  2. index index.html index.htm index.php;
  3. root /opt/lampp/htdocs;
  4. if ($host ~ “c1gstudio\.net”) {
  5. rewrite ^(.*) http://www.c1gstudio.com$1 permanent;
  6. }

三级域名跳转

  1. if ($http_host ~* “^(.*)\.i\.c1gstudio\.com$”) {
  2. rewrite ^(.*) http://top.yingjiesheng.com$1;
  3. break;
  4. }

域名镜向

  1. server
  2. {
  3. listen 80;
  4. server_name mirror.c1gstudio.com;
  5. index index.html index.htm index.php;
  6. root /opt/lampp/htdocs/www;
  7. rewrite ^/(.*) http://www.c1gstudio.com/$1 last;
  8. access_log off;
  9. }

某个子目录作镜向

  1. location ^~ /zhaopinhui {
  2. rewrite ^.+ http://zph.c1gstudio.com/ last;
  3. break;
  4. }

discuz ucenter home (uchome) rewrite

  1. rewrite ^/(space|network)-(.+)\.html$ /$1.php?rewrite=$2 last;
  2. rewrite ^/(space|network)\.html$ /$1.php last;
  3. rewrite ^/([0-9]+)$ /space.php?uid=$1 last;

discuz 7 rewrite

  1. rewrite ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2 last;
  2. rewrite ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3 last;
  3. rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3 last;
  4. rewrite ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3 last;
  5. rewrite ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3 last;
  6. rewrite ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2 last;

给discuz某版块单独配置域名

  1. server_name bbs.c1gstudio.com news.c1gstudio.com;
  2. location = / {
  3. if ($http_host ~ news\.c1gstudio.com$) {
  4. rewrite ^.+ http://news.c1gstudio.com/forum-831-1.html last;
  5. break;
  6. }
  7. }

discuz ucenter 头像 rewrite 优化

  1. location ^~ /ucenter {
  2. location ~ .*\.php?$
  3. {
  4. #fastcgi_pass unix:/tmp/php-cgi.sock;
  5. fastcgi_pass 127.0.0.1:9000;
  6. fastcgi_index index.php;
  7. include fcgi.conf;
  8. }
  9. location /ucenter/data/avatar {
  10. log_not_found off;
  11. access_log off;
  12. location ~ /(.*)_big\.jpg$ {
  13. error_page 404 /ucenter/images/noavatar_big.gif;
  14. }
  15. location ~ /(.*)_middle\.jpg$ {
  16. error_page 404 /ucenter/images/noavatar_middle.gif;
  17. }
  18. location ~ /(.*)_small\.jpg$ {
  19. error_page 404 /ucenter/images/noavatar_small.gif;
  20. }
  21. expires 300;
  22. break;
  23. }
  24. }

jspace rewrite

  1. location ~ .*\.php?$
  2. {
  3. #fastcgi_pass unix:/tmp/php-cgi.sock;
  4. fastcgi_pass 127.0.0.1:9000;
  5. fastcgi_index index.php;
  6. include fcgi.conf;
  7. }
  8. location ~* ^/index.php/
  9. {
  10. rewrite ^/index.php/(.*) /index.php?$1 break;
  11. fastcgi_pass 127.0.0.1:9000;
  12. fastcgi_index index.php;
  13. include fcgi.conf;
  14. }

About admin

Check Also

企业所得税年度报表关联方附表填表说明

中华人民共和国企业年度关联业务往来报告表 填报说明 一、根据《中华人民共和国企业所得税法》第四十三条的规定,制定本报告表。 二、本报告表包括:“关联关系表(表一)”、“关联交易汇总表(表二)”、“购销表(表三)”、“劳务表(表四)”、“无形资产表(表五)”、“固定资产表(表六)”、“融通资金表(表七)”、“对外投资情况表(表八)”、“对外支付款项情况表(表九)”共九张报告表。 三、本报告表适用于实行查账征收的居民企业和在中国境内设立机构、场所并据实申报缴纳企业所得税的非居民企业填报。 四、企业向税务机关报送年度企业所得税纳税申报表时,应附送本报告表。 五、“纳税人名称”:填报税务登记证所载纳税人的全称。 六、“纳税人识别号”:填报税务机关统一核发的税务登记证号码。      关联关系表(表一): 一、“纳税人识别号”:填报关联方所在国家或地区用于纳税申报的纳税人号码。 二、“国家(地区)”:填报关联方所在国家或地区的名称。 三、“地址”:填报关联企业注册地址和实际经营管理机构所在地地址或关联个人住所。     四、“关联关系类型”:应按以下关联关系标准填报代码A、B、C等,有多个关联关系类型的,应填报多个代码: A.一方直接或间接持有另一方的股份总和达到25%或以上;或者双方直接或间接同为第三方所持有股份达到25%或以上。若一方通过中间方对另一方间接持有股份,只要一方对中间方持股比例达到25%或以上,则一方对另一方的持股比例按照中间方对另一方的持股比例计算; B.一方与另一方(独立金融机构除外)之间借贷资金占一方实收资本50%或以上,或者一方借贷资金总额的10%或以上是由另一方(独立金融机构除外)担保; C.一方半数以上的高级管理人员(包括董事会成员和经理)或至少一名可以控制董事会的董事会高级成员是由另一方委派,或者双方半数以上的高级管理人员(包括董事会成员和经理)或至少一名可以控制董事会的董事会高级成员同为第三方委派; D.一方半数以上的高级管理人员(包括董事会成员和经理)同时担任另一方的高级管理人员(包括董事会成员和经理),或者一方至少一名可以控制董事会的董事会高级成员同时担任另一方的董事会高级成员; E.一方的生产经营活动必须由另一方提供的工业产权、专有技术等特许权才能正常进行; F.一方的购买或销售活动主要由另一方控制; G.一方接受或提供劳务主要由另一方控制; H.一方对另一方的生产经营、交易具有实质控制、或者双方在利益上具有相关联的其它关系,包括虽未达到A项持股比例,但一方与另一方的主要持股方享受基本相同的经济利益,以及家族、亲属关系等。      关联交易汇总表(表二): 一、本表为表三至表七的汇总情况表,除其他交易类型的交易金额外,所有交易类型的交易金额均为表三至表七各表的相应交易类型的交易金额汇总数。各表间勾稽关系如下: 1.材料(商品)购入第1列=表3购销表第1项;    材料(商品)购入第4列=表3购销表第4项;    材料(商品)购入第7列=表3购销表第7项。 2.商品(材料)销售第1列=表3购销表第8项;    商品(材料)销售第4列=表3购销表第11项;    商品(材料)销售第7列=表3购销表第14项。 3.劳务收入第1列=表4劳务表第1项;    劳务收入第4列=表4劳务表第4项;    劳务收入第7列=表4劳务表第7项。 4.劳务支出第1列=表4劳务表第8项;    劳务支出第4列=表4劳务表第11项;    劳务支出第7列=表4劳务表第14项。 5.受让无形资产第1列=表5无形资产表总计第1列;    受让无形资产第4列=表5无形资产表总计第2列;    受让无形资产第7列=表5无形资产表总计第4列。 6.出让无形资产第1列=表5无形资产表总计第6列;    出让无形资产第4列=表5无形资产表总计第7列;    出让无形资产第7列=表5无形资产表总计第9列。 7.受让固定资产第1列=表6固定资产表总计第1列;    受让固定资产第4列=表6固定资产表总计第2列;    受让固定资产第7列=表6固定资产表总计第4列。 8.出让固定资产第1列=表6固定资产表总计第6列;    出让固定资产第4列=表6固定资产表总计第7列;    出让固定资产第7列=表6固定资产表总计第9列。 9.融资应计利息收入第4列=表7融通资金表合计1第8列;    融资应计利息收入第7列=表7融通资金表合计2第8列;    融资应计利息支出第4列=表7融通资金表合计1第7列;    融资应计利息支出第7列=表7融通资金表合计2第7列。 10.其他是指除上述列举业务类型以外的业务发生金额。 二、“是否按要求准备了同期资料:是□  否□”:按有关规定准备同期资料的企业在“是□”方框内打√,否则在“否□”方框内打√。 三、“免除准备同期资料□”:如符合免除准备同期资料的企业在方框内打√。 四、“本年度是否签订成本分摊协议:是□  否□”:本年度签订成本分摊协议的企业在“是□”方框内打√,否则在“否□”方框内打√。      购销表(表三): 一、“购入总额”:填报年度购入的原材料、半成品、材料(商品)等有形资产的金额,不包括固定资产、工程物资和低值易耗品。 二、“销售总额”:填报年度所有销售商品(材料)的金额。 三、“来料加工”:填报收取的加工费金额。 四、“国家(地区)”:填报境外关联方或非关联方所在国家或地区的名称。 五、“定价方法”:分为以下六种:1.可比非受控价格法;2.再销售价格法;3.成本加成法;4.交易净利润法;5.利润分割法;6.其他方法。本栏填报对应数字,如选择“6”,应在备注栏中说明所使用的具体方法。      劳务表(表四): 一、“境外劳务收入”:填报企业提供劳务从境外取得的收入。 二、“境外劳务支出”:填报企业接受劳务向境外支付的费用。 三、“国家(地区)”:填写境外关联方或非关联方所在国家或地区的名称。 四、“定价方法”:分为以下六种:1.可比非受控价格法;2.再销售价格法;3.成本加成法;4.交易净利润法;5.利润分割法;6.其他方法。本栏填报对应数字,如选择“6”,应在备注栏中说明所使用的具体方法。      融通资金表(表七): 一、企业从其关联方接受的债权性投资与企业接受的权益性投资的比例=年度各月平均关联债权投资之和/年度各月平均权益投资之和,其中:各月平均关联债权投资=(关联债权投资月初账面余额+月末账面余额)/2 ;各月平均权益投资=(权益投资月初账面余额+月末账面余额)/2。 二、定期融资应按每笔融资分别填报,融入、融出不得填在同一行。 三、“国家(地区)”:填报境外关联方所在国家或地区的名称。 四、“利率”:填报融资的年利率。 五、“应计利息支出”或“应计利息收入”:填报按权责发生制计算的应计利息支出或应计利息收入,应计利息支出包括资本化的应计利息支出。 六、如果金额单位为外币的,按照纳税年度最后一日的人民币汇率中间价折合人民币。      对外投资情况表(表八): 一、 本表适用于持有外国(地区)企业股份的中国居民企业填报。 二、“被投资外国企业基本信息”:填报企业所投资的外国企业的基本信息,如企业投资多个外国企业的,应分别填报。其中,“对人民币汇率”填报年度12月31日的记帐本位货币对人民币汇率的中间价。 三、“被投资外国企业总股份信息”和“企业持有被投资外国企业股份信息”:填报外国企业全部股份数量和企业持有的股份数量,按照有表决权的普通股、无表决权的普通股、优先股以及其他类似股份的权益性资本等分类、分时间段填报。 四、在香港特别行政区、澳门特别行政区和台湾地区成立的企业,参照适用本表所称的“外国企业”。      对外支付款项情况表(表九): 一、“本年度向境外支付款项金额”:填报本年度向境外实际支付款项的金额,包括未支付但已列入本年度成本费用的金额。 二、“是否享受税收协定优惠”:填报“是”或“否”。 三、“已扣缴企业所得税金额”:填报该项支付金额所对应的非居民企业所得税扣缴金额,不属于非居民企业所得税扣缴范围的,填报“不适用”。 四、“股息、红利”:填报向权益性投资方支付的投资收益。 五、“利息”:填报向债权性投资方支付的投资收益。 六、“租金”:填报因取得固定资产等有形资产的使用权而向出租方支付的费用。 七、“特许权使用费”:填报支付的专利权、非专利技术、商标权、著作权等的使用费。 八、“财产转让支出”:填报因取得各种财产所有权而支付的款项。 九、“佣金”:填报向居间介绍货物购销成交的第三方支付的费用,包括佣金、手续费、回扣等。 十、“设计费”:填报委托受托方进行建筑、工程、系统、软件等项目设计而支付的费用。 十一、“咨询费”:填报接受咨询服务而支付的费用。 十二、“培训费”:填报接受业务技能、专业知识、系统操作、设备操作等培训而支付的费用。 十三、“管理服务费”:填报接受各种管理服务而支付的费用。 十四、“承包工程款”:填报接受承包装配、勘探等工程作业或有关工程项目劳务而支付的款项。 十五、“建筑安装款”:填报接受建筑、安装等项目的劳务而支付的款项。 十六、“文体演出款”填报向境外演出团体或个人支付的境内文艺、体育等表演的款项。 十七、“认证检测费”:填报接受有关资质、证书、产品检测等劳务而支付的费用。 十八、“市场拓展费”:填报接受有关市场开发、拓展、渗透等劳务而支付的费用。 十九、“售后服务费”:填报接受产品的检测、维修、保养等售后服务而支付的费用。 二十、“其它”:填报不能归入上述分类的劳务费支出,对于主要的项目应在下面的栏目中列明具体名称。

发表评论