1、Rewite规则
Rewrite 规则可以实现对 urI 的重写,以及重定向。 重定向:重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向),简单来说,就是从地址A跳转到地址B。 为什么要进行重定向以及什么时候需要重定向? a.网站调整(如改变网页目录结构); b.网页被移到一个新地址; c.网页扩展名改变(如应用需要把.php改成.html) 这些情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误的信息,丢失访问流量;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点。
2、301和302
301 redirect: 301代表永久性转移(PermanentlyMoved) 302 redirect: 302代表暂时性转移(TemporarilyMoved ) 共同点: 301和302状态码都表示重定向,就是说浏览器在得到服务器返回的这个状态码后,会自动跳转到一个新的URL地址。这个地址可以从响应的Location首部中获取(直观显示就是:输入的地址A瞬间变成了另一个地址B) 不同点: 301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了) ,搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址。 302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。 什么时候进行301或者302跳转? 302跳转:当一个网站或者网页24/48小时内临时移动到一个新的位置,这时候就要进行302跳转。 301跳转:之前的网站因为某种原因需要移除掉,然后要到新的地址访问,是永久性的。 使用301跳转的场景: a.域名到期不想续费(或者发现了更适合网站的域名),想换个域名。 b.在搜索引擎的搜索结果中出现了不带www的域名,而带www的域名却没有收录,这个时候可以用301重定向来告诉搜索引擎我们目标的域名是哪个。 c.空间服务器不稳定,换空间的时候。 尽量使用301跳转: 举个例子: 从网站A (网站比较烂)上做了一个302跳转到网站B (搜索排名很靠前) ,有时搜索引擎会使用网站B的内容,但却收录网站A的地址。这样在不知不觉间,网站B在为网站A作贡献,网站A的排名就靠前了。 而302重定向很容易被搜索引擎误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”
3、实现从www.yang.org
到https://www.yang.org
的跳转
vim / usr/ local/ nginx/ conf/ nginx. conf
server {
listen 80;
server_name www. yang. org;
rewrite ^/ ( . * ) $ https:/ / www. yang. org/ $1 ;
nginx - t
nginx - s reload
测试: 搜索www.yang.org
页面跳转到https://www.yang.org
搜索www.yang.org/test.html
跳转到https://www.yang.org/test.html
4、从www.yang.org/bbs
到https://bbs.yang.org:
的跳转
vim / usr/ local/ nginx/ conf/ nginx. conf
location / {
root / bbs;
index index. html index. htm;
}
}
server {
listen 80;
server_name www. yang. org;
rewrite ^/ bbs$ https:/ / bbs. yang. org/ index. html permanent;
mkdir / bbs
vim / bbs/ index. html
https:/ / bbs. yang. org
nginx - t
nginx - s reload
vim / etc/ hosts
172. 25. 254. 51 www. yang. org bbs. yang. org
测试: 访问www.yang.org/bbs
页面会自动跳转到https://bbs.yang.org/