{"id":656,"date":"2022-03-02T10:05:29","date_gmt":"2022-03-02T02:05:29","guid":{"rendered":"https:\/\/www.buyao007.icu\/?p=656"},"modified":"2022-03-02T10:29:45","modified_gmt":"2022-03-02T02:29:45","slug":"11-nginx%e7%9a%84rewrite%e9%87%8d%e5%86%99","status":"publish","type":"post","link":"https:\/\/www.buyao007.icu\/?p=656","title":{"rendered":"11.Nginx\u7684rewrite\u91cd\u5199"},"content":{"rendered":"\n<p>\u5b59\u5bcc\u9633\uff0c \u6c5f\u6e56\u4eba\u79f0\u6ca1\u4eba\u79f0\u3002\u591a\u5e74\u4e92\u8054\u7f51\u8fd0\u7ef4\u5de5\u4f5c\u7ecf\u9a8c\uff0c\u66fe\u8d1f\u8d23\u8fc7\u5b59\u5e03\u65af\u5927\u89c4\u6a21\u96c6\u7fa4\u67b6\u6784\u81ea\u52a8\u5316\u8fd0\u7ef4\u7ba1\u7406\u5de5\u4f5c\u3002\u64c5\u957fWeb\u96c6\u7fa4\u67b6\u6784\u4e0e\u81ea\u52a8\u5316\u8fd0\u7ef4\uff0c\u66fe\u8d1f\u8d23\u56fd\u5185\u67d0\u5927\u578b\u535a\u5ba2\u7f51\u7ad9\u8fd0\u7ef4\u5de5\u4f5c\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">1.\u4ec0\u4e48\u662frewrite<\/h2>\n\n\n\n<p>Rewrite\u4e3b\u8981\u5b9e\u73b0url\u5730\u5740\u91cd\u5199, \u4ee5\u53ca\u5730\u5740\u91cd\u5b9a\u5411\uff0c\u5c31\u662f\u5c06\u7528\u6237\u8bf7\u6c42web\u670d \u52a1\u5668\u7684\u5730\u5740\u91cd\u65b0\u5b9a\u5411\u5230\u5176\u4ed6URL\u7684\u8fc7\u7a0b<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">2.rewrite\u5e94\u7528\u573a\u666f<\/h2>\n\n\n\n<p>1.\u5730\u5740\u8df3\u8f6c: www.360buy.com --->www.jd.com<br>2.\u534f\u8bae\u8df3\u8f6c: http:\/\/oldboy.com --->https:\/\/oldboy.com<br>3.\u4f2a\u9759\u6001: \u52a8\u6001url---->\u9759\u6001url \u9632\u6b62url\u66b4\u9732\u7f51\u7ad9\u8def\u5f84(\u76ee\u5f55\u7ed3\u6784\uff09<br>blog.oldboy.com\/index.php?product=linux&amp;page=01<br>==rewrite==> blog.oldboy.com\/linux\/page01<br>4.\u5176\u4ed6\u8df3\u8f6c\u9700\u6c42:seo \u9700\u6c42<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">3.rewrite\u5e38\u7528\u6a21\u5757<\/h2>\n\n\n\n<p><strong><em>1.if\u6a21\u5757<\/em><\/strong><\/p>\n\n\n\n<p><strong>\u8bed\u6cd5<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Syntax:<\/th><td><code><strong>if<\/strong>&nbsp;(<em>condition<\/em>) { ... }<\/code><\/td><\/tr><tr><th>Default:<\/th><td>\u2014<\/td><\/tr><tr><th>Context:<\/th><td><code>server<\/code>,&nbsp;<code>location<\/code><\/td><\/tr><\/tbody><\/table><figcaption>if () {<br>\u6ee1\u8db3\u6761\u4ef6\u540e\u6267\u884c\u6307\u4ee4<br>}<br>#\u4e3b\u8981\u5e94\u7528\u573a\u666f \u914d\u5408\u5404\u79cdnginx\u53d8\u91cf(\u5185\u7f6e\/\u624b\u52a8\u521b\u5efa) \u5224\u65ad.....<\/figcaption><\/figure>\n\n\n\n<p><strong>if \u5e38\u7528\u7684\u6761\u4ef6\u53ca\u683c\u5f0f<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\u6761\u4ef6<\/td><td>\u89e3\u91ca<\/td><td>\u53d6\u53cd<\/td><\/tr><tr><td>=<\/td><td>\u7cbe\u786e\u5339\u914d,\u4e00\u6a21\u4e00\u6837 \u7b49\u4e8e<\/td><td>\uff01=<\/td><\/tr><tr><td>~<\/td><td>\u8fc7\u6ee4,\u652f\u6301\u6b63\u5219,\u533a\u5206\u5927\u5c0f\u5199<\/td><td>\uff01~<\/td><\/tr><tr><td>~*<\/td><td>\u8fc7\u6ee4,\u652f\u6301\u6b63\u5219,\u4e0d\u533a\u5206\u5927\u5c0f\u5199<\/td><td>\uff01~*<\/td><\/tr><tr><td>-f<\/td><td>\u6587\u4ef6\u5b58\u5728<\/td><td>\uff01-f<\/td><\/tr><tr><td>-d<\/td><td>\u76ee\u5f55\u5b58\u5728<\/td><td>\uff01-d<\/td><\/tr><tr><td>-e<\/td><td>\u6587\u4ef6\u6216\u76ee\u5f55\u5b58\u5728<\/td><td>\uff01-e<\/td><\/tr><tr><td>-x<\/td><td>\u6587\u4ef6\u6709\u6267\u884c\u6743\u9650<\/td><td>\uff01-x<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Nginx\u5e38\u7528\u53d8\u91cf<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>nginx\u5185\u7f6e\u53d8\u91cf<\/td><td>&nbsp;<\/td><\/tr><tr><td>$http_user_agent<\/td><td>\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668<\/td><\/tr><tr><td>$request_uri<\/td><td>\u7528\u6237\u8bf7\u6c42\u7684uri(\u5305\u542b\u53c2\u6570)<\/td><\/tr><tr><td>$host<\/td><td>\u7528\u6237\u8bbf\u95eeHost\u5185<\/td><\/tr><tr><td>$remote_addr<\/td><td>\u7528\u6237ip\u5730\u5740<\/td><\/tr><tr><td>$args<\/td><td>\u53ea\u53d6\u51fa\u8bf7\u6c42\u884c\u91cc\u9762\u7684\u53c2\u6570\u90e8\u5206<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>\u5e94\u7528\u6848\u4f8b:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>###\u6848\u4f8b01 \u7528\u6237\u7684\u5ba2\u6237\u7aef\u5982\u679c\u662f \u5305\u542bspider \u6216\u8005bot \u7684(\u4e0d\u533a\u5206\u5927\u5c0f \u5199),\u5219\u663e\u793a403\uff08\u9632\u722c\u866b\uff09<\/strong>\n\n&#91;root@web01 \/etc\/nginx\/conf.d]# cat rewrite.oldboy.com.conf\r\nserver {\r\n\tlisten 80;\r\nserver_name rewrite.oldboy.com;\r\ndefault_type text\/html; ###\u4e0d\u52a0\u8fd9\u4e2a\u53c2\u6570\u6d4f\u89c8\u5668\u9ed8\u8ba4\u89e3\u6790\u4e0d\u4e86\u4f1a\u81ea\u52a8\u4e0b\u8f7d\u3002\r\nroot \/code\/rewrite;\r\nindex index.html;\r\nif ( $http_uer_agent ~* spider|bot\" ) {\r\nreturn 200 \"do not user spider\";\r\n  }\r\n}\r\n<strong>\u547d\u4ee4\u884c\u6d4b\u8bd5<\/strong>\r\n&#91;root@web01 \/etc\/nginx\/conf.d]# curl -A baiduspider -H Host:rewrite.oldboy.com   10.0.0.7\r\ndo not user spider\n\n\n<strong>###\u6848\u4f8b02 : \u8fc7\u6ee4Nginx\u8bf7\u6c42\u4e2d\u5305\u542ba1=3526\u7684http\u8bf7\u6c42\u523010.16.3.5\u76848080 \u7aef\u53e3\u5904\u7406\u3002<\/strong>\n\rURL\uff1a re.oldboy.com?a1=3526&amp;a2=666&amp;a3=9999\r\nif ( $request_uri ~* 'a1=3526' ) {  ###\u4e00\u822c\u4f1a\u8981\u6c42a1\u7b49\u4e8e4\u4f4d\u6570\u6216\u66f4\u591a\u4f4d\u6570\\d\u4ee3\u8868\u6570\u5b57\u3002\r\nproxy_pass   http:\/\/10.16.3.5:8080;\r\n}\r\n\n<\/code><\/pre>\n\n\n\n<p><strong><em>2.Set\u6a21\u5757<\/em><\/strong><\/p>\n\n\n\n<p><strong><em>\u8bed\u6cd5<\/em><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Syntax:<\/th><td><code><strong>set<\/strong>&nbsp;<em>$variable<\/em>&nbsp;<em>value<\/em>;<\/code><\/td><\/tr><tr><th>Default:<\/th><td>\u2014<\/td><\/tr><tr><th>Context:<\/th><td><code>server<\/code>,&nbsp;<code>location<\/code>,&nbsp;<code>if<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>\u5e94\u7528\u6848\u4f8b<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>#\u6848\u4f8b03\u7528\u6237\u8bf7\u6c42rewrite.sfy.com.cn\u8bbf\u95ee   \/code\/rewrite\/cn\/index.html  sfy.cn \u7528\u6237\u8bf7\u6c42 rewrite.sfy.com.jp\u8bbf\u95ee   \/code\/rewrite\/jp\/index.html  sfy.jp<\/strong>\n\n\n&#91;root@web01 \/etc\/nginx\/conf.d]# cat rewrite.oldboy.com.conf\r\nserver {\r\n\tlisten 80;\r\n\tserver_name rewrite.sfy.com rewrite.sfy.com.cn rewrite.sfy.com.jp;\r\n\tcharset utf8;\r\n\troot \/code\/rewrite;\r\n\tindex index.html;\r\n\tdefault_type text\/html;\r\n\tif ($host ~ '\\.cn$' ) {\r\n\tset $lang \"cn\";\r\n\t}\r\n\tif ($host ~ '\\.jp$' ) {\r\n\tset $lang \"jp\";\n\r        if ($request_uri ~ '\/' ) {\r\n        rewrite ^\/(.*)$ \/cn\/$1;\r\n\t}\r\nrewrite ^\/$   http:\/\/rewrite.sfy.com\/$lang\/ redirect;\r\n}\r\n<\/code><\/pre>\n\n\n\n<p><strong><em>3.return\u6a21\u5757<\/em><\/strong><\/p>\n\n\n\n<p><strong>\u8bed\u6cd5<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Syntax:<\/th><td><code><strong>return<\/strong>&nbsp;<em>code<\/em>&nbsp;[<em>text<\/em>];<\/code><br><code><strong>return<\/strong>&nbsp;<em>code<\/em>&nbsp;<em>URL<\/em>;<\/code><br><code><strong>return<\/strong>&nbsp;<em>URL<\/em>;<\/code><\/td><\/tr><tr><th>Default:<\/th><td>\u2014<\/td><\/tr><tr><th>Context:<\/th><td><code>server<\/code>,&nbsp;<code>location<\/code>,&nbsp;<code>if<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>\u5e94\u7528\u6848\u4f8b<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>#\u9700\u6c42:\u5982\u679c\u7528\u8bbf\u95eerewrite.sfy.com \u5219\u8fd4\u56de\u503c\u5b57 \u7b26\u4e32. \u8bf7\u66f4\u6362\u6d4f\u89c8\u5668,\u4f7f\u7528Edge\/Chrome\/Firefox<\/strong>\nif ($http_user_agent ~* \"MSIE\" ) {\r\nreturn 200 \"\u8bf7\u66f4\u6362\u6d4f\u89c8\u5668,\u4f7f\u7528Edge\/Chrome\/Firefox\u201d\r\n}\r\n<\/code><\/pre>\n\n\n\n<p><strong><em>4.rewrite \u8df3\u8f6c\u529f\u80fd<\/em><\/strong><\/p>\n\n\n\n<p><strong>\u8bed\u6cd5<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Syntax:<\/th><td><code><strong>rewrite<\/strong>&nbsp;<em>regex<\/em>&nbsp;<em>replacement<\/em>&nbsp;[<em>flag<\/em>];<\/code><\/td><\/tr><tr><th>Default:<\/th><td>\u2014<\/td><\/tr><tr><th>Context:<\/th><td><code>server<\/code>,&nbsp;<code>location<\/code>,&nbsp;<code>if<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>rewrite flag\u6807\u8bb0<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>break<\/td><td>\u8df3\u8f6c\u5b8c\u6210\u540e,\u505c\u6b62\u5339\u914d\u5176\u4ed6\u4efb\u4f55\u89c4\u5219,\u76f4\u63a5\u8fd4\u56de\u7ed3\u679c<\/td><\/tr><tr><td>last<\/td><td>\u8c03\u6574\u5b8c\u6210\u540e,\u91cd\u65b0\u4f7f\u7528\u65b0\u7684uri\u7ee7\u7eed\u5411\u4e0b\u5339\u914d<\/td><\/tr><tr><td>redirect<\/td><td>302 \u4e34\u65f6\u91cd\u5b9a\u5411, \u4e34\u65f6\u4e0d \u4f1a\u4e00\u76f4\u751f\u6548\uff08\u7528\u4e8ehttp\u8f6chttps\uff09<\/td><\/tr><tr><td>permanent<\/td><td>301 \u7528\u6237\u8df3\u8f6c, \u6c38\u4e45\u751f\u6548<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">4.Rewrite\u751f\u4ea7\u73af\u5883\u6848\u4f8b<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>##\u9700\u6c421: \u6839\u636e\u7528\u6237\u6d4f\u89c8\u5668\u8bf7\u6c42\u5934\u4e2d\u643a\u5e26\u7684\u8bed\u8a00\u8c03\u5ea6\u5230\u4e0d\u540c\u7684\u9875\u9762\r\n\u901a\u8fc7nginx \u5339\u914d \u4e0d\u540c\u8bed\u8a00<\/strong>\r\n&#91;root@web01 \/etc\/nginx\/conf.d]# cat url.sfy.org.conf\r\nserver {\r\n\tlisten 80;\r\n\tserver_name url.sfy.org;\r\n\troot \/code\/url;\r\n\tif ($http_accept_language ~ \"zh-CN|zh\" ) {\r\nset  $language \"zh\";\r\n}\r\n\tif ($http_accept_language ~ \"en\" ) {\r\nset  $language \"en\";\r\n}\r\n\trewrite ^\/$   \/$language\/ redirect;\r\n}\r\n<strong>##\u9700\u6c422: \u7528\u6237\u901a\u8fc7\u624b\u673a\u8bbe\u5907\u8bbf\u95eeurl.sfy.com \u8df3\u8f6c\u81f3 m.sfy.org<\/strong>\nif ( $http_user_agent ~* \"android|ios\" ) {\r\n\t#rewrite\u5b9e\u73b0\r\n\trewrite ^\/(.*)$  http:\/\/m.sfy.org\/$1 redirect;\r\n\t#return\u5b9e\u73b0\r\n\treturn  302 http:\/\/m.sfy.org\/$request_uri ;\r\n}\r\n<strong>##\u9700\u6c423: \u7528\u6237\u901a\u8fc7http\u534f\u8bae\u8bf7\u6c42,\u80fd\u81ea\u52a8\u8df3\u8f6c\u81f3https\u534f\u8bae<\/strong>\n#\u89c4\u5219 rewrite\u65b9\u5f0f\r\nrewrite ^\/(.*)$   https:\/\/url.sfy.org\/$1 redirect;\r\nrewrite ^\/(.*)$   https:\/\/$http_host\/$1 redirect;\r\n#\u89c4\u5219 return\u65b9\u5f0f\r\nreturn  302 https:\/\/$http_host\/$request_uri ;\n\n<strong>##\u9700\u6c424: \u7f51\u7ad9\u7ef4\u62a4\u8fc7\u7a0b\u4e2d,\u5e0c\u671b\u7528\u6237\u8bbf\u95ee\u6240\u6709\u7f51\u7ad9\u91cd\u5b9a\u5411\u81f3\u4e00\u4e2a\u7ef4\u62a4\u9875\u9762<\/strong>\n\r\u5728server\u5c42\u5b9a\u4e49\u8df3\u8f6c\u81f3\u7ef4\u62a4\u9875\u9762\r\nrewrite ^(.*)$ http:\/\/baidu.com;\r\n<strong>##\u9700\u6c425: \u516c\u53f8\u7f51\u7ad9\u5728\u505c\u673a\u7ef4\u62a4\u65f6,\u6307\u5b9a\u7684ip\u80fd\u591f\u6b63\u5e38\u8bbf\u95ee,\u5176\u4ed6\u7684ip\u8df3\u8f6c \u5230\u7ef4\u62a4\u9875<\/strong>\r\n##\u7b80\u5355\u7c97\u66b4\r\ncharset utf8;\r\ndefault_type text\/html;\r\nif ( $remote_addr != '10.0.0.1' ) {\r\nreturn 200 \"\u7f51\u7ad9\u7ef4\u62a4\u4e2d\";\r\n}\r\n##\u4e13\u4e1a\r\nset $ip 0;##\u5b9a\u4e49\u53d8\u91cfip\u4e3a0\r\nif ( $remote_addr = '10.0.0.1' ) {\r\nset $ip 1;###\u5982\u679cip\u4e3a10.0.0.1\u5219ip\u4e3a1\r\n}\r\nif ( $ip = 0 ) {\r\nreturn 200 \"\u7f51\u7ad9\u7ef4\u62a4\u4e2d\";\r\n}\r\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5b59\u5bcc\u9633\uff0c \u6c5f\u6e56\u4eba\u79f0\u6ca1\u4eba\u79f0\u3002\u591a\u5e74\u4e92\u8054\u7f51\u8fd0\u7ef4\u5de5\u4f5c\u7ecf\u9a8c\uff0c\u66fe\u8d1f\u8d23\u8fc7\u5b59\u5e03\u65af\u5927\u89c4\u6a21\u96c6\u7fa4\u67b6\u6784\u81ea\u52a8\u5316\u8fd0\u7ef4\u7ba1\u7406\u5de5\u4f5c\u3002\u64c5\u957fWeb\u96c6 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":246,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts\/656"}],"collection":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=656"}],"version-history":[{"count":3,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts\/656\/revisions"}],"predecessor-version":[{"id":661,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts\/656\/revisions\/661"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/media\/246"}],"wp:attachment":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}