一、前言
什么是重定向呢?
重定向是一个非常常用的功能,在 web 服务中,通常会通过重定向功能,将一个域名的请求转发到另一个域名上。
什么情况下用到重定向?
举例:假设你有一个域名为 aaa.com
网站, 但后面希望改版到 bbb.com
这个域名上,为了尽可能继承原网站的 SEO ,在新域名上线前期,需要将旧域名的流量全部汇聚到新域名的站点上来,此时就需要用到重定向功能了。
在原服务上设定重定向规则后,当原服务器收到外部的来访请求时,会根据你设定的重定向规则,将请求重定向到新服务器上。
继续上面的例子,当用户访问 http://aaa.com/index.html
时,源服务器会告诉来访用户,你要的资源在 http://bbb.com/index.html
服务器上,你去找它要吧,此时来访用户根据源服务器的通知,重新到新服务器去获取资源,这就完成了请求的重定向。
重定向类型?
常用的重定向类型有 301
和 302
两种,本文主要介绍 301
跳转。
哪些服务器可以设置重定向?
常用的 Web
服务器都提供重定向功能,如 Nginx
、 Apache
、Tomcat
,本文主要介绍 Nginx
的重定向配置使用。
二、重定向实例
下面通过 3 个简单的实例,介绍 Nginx 301 重定向的配置方法。
2.1 重定向请求到特定网址
下方示例演示:将域名 mydomain.com
的所有请求,重定向到特定的网址 http://anotherdomain.com/dir1/index.php
上。
server {
listen 80;
server_name mydomain.com;
return 301 http://anotherdomain.com/dir1/index.php;
}
2.2 重定向请求其他域名
下方示例演示:将域名 mydomain.com
重定向到 anotherdomain.com
新域名上,但访问的资源路径不变。
具体效果:
源URL:http://mydomain.com/dir/1.jpg
重定向后的URL:http://anotherdomain.com/dir/1.jpg
server {
listen 80;
server_name mydomain.com;
return 301 http://anotherdomain.com$request_uri;
}
2.3 将请求重定向到特定协议
使用 Nginx 的重定向功能时,除了可以重定向到新域名,还可以将请求重定向到特定的协议上。
你可以手动指定重定向到 http
或 https
协议,也可通过 $scheme
参数继承用户来访时使用的协议类型。
如:在重定向域名时,继承用户来访时使用的协议类型。
server {
listen 80;
server_name mydomain.com;
return 301 $scheme://anotherdomain.com$request_uri;
}
三、总结
- 指向的新域名,其后的
/
不需要填写。 - 重定向时也可以重定向到新的服务端口,在域名后已
:端口号
的方式添加即可。 301 & 302 跳转的区别 ?
- 301 永久跳转,当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息中的状态码的一种,表示本网页永久性转移到另一个地址。
- 302 临时跳转,也是状态码的一种,意义是暂时转向到另外一个网址。
四、思路拓展
上述实例的跳转影响范畴较大,其实我们还可以引入判断,将跳转控制在一个更灵活的维度上。
如:Nginx 上监听了多个域名的web服务,你可通过条件判断:
- 设定某些域名或其二级、三级域名资源跳转;
- 设定域名下仅特定的文件跳转(基于文件后缀);
- 设定域名下仅特定路径的资源跳转。
五、相关文章
https://www.cnblogs.com/crazylqy/p/6892010.html
https://m.jb51.net/article/79216.htm
1 条评论
博主您好,能否方便加您呢?