结合本文场景,须要安装Nginx。
1.1 关于Linux系统安装Nginx可以参考我的文章—(传送门)。

URL重写是指将一个URL要求重新写成网站可以处理的另一个URL的过程。这样说可能不是很好理解,举个例子来解释一下,在开拓中可能常常碰着这样的需求,比如通过浏览器要求的http://localhost:8080/getUser?id=1,但是须要通过SEO优化等等缘故原由,须要把要求的地址重写为http://localhost:8080/getUser/1这样的URL,从而符合需求或者更好的被网站阅读。
当碰着这种要求的时候,就须要利用到UrlRewrite重写或者利用一些网关路由,如SpringCloud的Gateway,Zuul,又或者是Nginx来实现这个功能。
本文先容Nginx实现URL重写。
3.利用先容在Nginx中利用URL重写须要利用到一个指令-----rewrite,其语法如下:
rewrite regex replacement [flag]; regex :可以利用正则或者字符串来表示相匹配的地址。replacement:可以表示重定向的地址。flag :flag标志的浸染是用于掌握当匹配到对应的rewrite规则后是否连续检讨后续的rewrite规则。
flag值为如下四种,分别是:
last:停滞处理当前的rewrite指令集,而后通过重写后的规则重新发起要求,浏览器地址栏URL地址不变。break:和break指令一样,都是停滞处理当前高下文中的其他重写模块指令。redirect:如果更换字符串不以“ http://”,“ https://”或“ $scheme” 开头,返回带有302代码的临时重定向,浏览器地址会显示跳转后的URL地址。permanent:返回301代码的永久重定向,浏览器地址栏会显示跳转后的URL地址。例如:
server { ... rewrite ^(/download/.)/media/(.)\..$ $1/mp3/$2.mp3 last; rewrite ^(/download/.)/audio/(.)\..$ $1/mp3/$2.ra last; return 403; ...}
其余还可以根据if来判断,指令如下:
if (condition) { ... }
个中condition是条件,如果为true,则实行大括号中的内容:
利用“ =”和“ !=”运算符比较变量和字符串;利用“ ~”(对付区分大小写的匹配)和“ ~”(对付不区分大小写的匹配)运算符,将变量与正则表达式进行匹配。正则表达式可以包含可供往后在$1… $9变量中重用的捕获。负操作符“ !~”和“ !~”也可用。如果正则表达式包含“ }”或“ ;”字符,则全体表达式应包含在单引号或双引号中。利用“ -f”和“ !-f”运算符检讨文件是否存在;利用“ -d”和“ !-d”运算符检讨目录是否存在;利用“ -e”和“ !-e”运算符检讨文件,目录或符号链接是否存在;利用“ -x”和“ !-x”运算符检讨可实行文件。例如:
if ($http_user_agent ~ MSIE) { rewrite ^(.)$ /msie/$1 break;}if ($http_cookie ~ \"大众id=([^;]+)(?:;|$)\"大众) { set $id $1;}if ($request_method = POST) { return 405;}if ($slow) { limit_rate 10k;}if ($invalid_referer) { return 403;}4.Nginx配置
本文例子只是将要求跳转到本人的博客首页http://www.dalaoyang.cn/,配置如下:
worker_processes 1;events { worker_connections 1024;}http { server { listen 10000; server_name localhost; #如果host不是dalaoyang.cn,则301到www.dalaoyang.cn中 if ( $host != \"大众dalaoyang.cn\"大众 ){ rewrite ^/(.)$ https://www.dalaoyang.cn/$1 last; } }}5.测试
测试就比较大略了,在浏览器访问http://localhost:10000/about,会自动跳转到https://www.dalaoyang.cn/about,如图所示。
作者:dalaoyang
链接:https://www.imooc.com/article/273653