Nginx map 指令实现页面重定向的例子

有时候网站 URL 规则会进行调整,需求的不断变化也会导致一些旧的 URL 无法访问,这个时候可以使用 Nginx 的 map 指令匹配这些旧的 URL,并重定向到新的 URL 规则,而且这种方式是在 Nginx 层面进行,不会对网站性能产生影响。

在 nginx.conf 的 http 域中添加 map 指令规则,这里包含一个 URL 规则映射文件:

# 设置301跳转
map $request_uri $new {
    include /etc/nginx/redirect.map;
}
map 指令支持引入一个映射文件的方式,这里 redirect.map 文件内容格式如下:

PHP

~^/page/mordern-php$ /page/modern-php;

目前只添加了一行作为测试,前面可以是正则表达式,后面是要跳转到的新的 URL ,每行以分号结束。

由于网站开启了 HTTPS,在监听 443 端口的 server 块中,location 语句前添加规则如下:

if ($new) {
    rewrite ^ https://www.111cn.net$new redirect;
}

这个语句表示如果 URL 匹配到 redirect.map 里的规则,则跳转到新的 URL 规则。

重启 nginx 服务,就可以看到效果了。

补充:

顶级域名重定向到www

server {
 server_name 111cn.net;
 rewrite ^/(.*)$ http://www.111cn.net/$1 permanent;
 }

如上配置,所以111cn.net的请求都会重定向到www.111cn.net,301重定向对SEO很有帮助.这个配置大家用的最多。
www二级域名重定向到顶级域名

server {
 server_name www.111cn.net;
 rewrite ^/(.*)$ http://domain.com/$1 permanent;
 }
江湖盛传顶级域名的权重会比www二级域名的权重高,有些seoer会要求运维一定要把www的请求转到顶级域名,和上面的做法相反。
目录重定向

if ( $request_filename ~ nginxjiaocheng/ ) {
 rewrite ^ http://www.111cn.net/nginx/? permanent;
 }

目录跳转新域名

if ( $request_filename ~ nginx/ ) {
 rewrite ^ http://nginx.111cn.net/? permanent;
 }
nginx这个栏目太火了,打算专门弄一个域名。

时间: 2024-07-30 23:17:03

Nginx map 指令实现页面重定向的例子的相关文章

利用Nginx的map指令实现页面跳转_nginx

前言 本文主要介绍了利用Nginx中map指令实现页面跳转的方法,有需要的下面来一起学习学习. 实现方法 在 nginx.conf 的 http 域中添加 map 指令规则,这里包含一个 URL 规则映射文件: # 设置301跳转 map $request_uri $new { include /etc/nginx/redirect.map; } map 指令支持引入一个映射文件的方式,这里 redirect.map 文件内容格式如下: ~^/page/mordern-php$ /page/mo

Nginx map指令匹配 User Agent 自定义值例子

本文介绍有关 User-Agent 的知识,以及使用 Nginx map 指令配合正则表达式匹配 User Agent 自定义值,通过捕获 UA 自定义值,可以做很多事情,其中一个场景是:让一台测试机支持多个测试同时测试一个项目,原理就是匹配 UA 值,设置不同的 WEB 根目录. 关于 User Agent User Agent 中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等.

Nginx 配置指令的执行顺序(一)

大多数 Nginx 新手都会频繁遇到这样一个困惑,那就是当同一个 location 配置块使用了多个 Nginx 模块的配置指令时,这些指令的执行顺序很可能会跟它们的书写顺序大相径庭.于是许多人选择了"试错法",然后他们的配置文件就时常被改得一片狼藉.这个系列的教程就旨在帮助读者逐步地理解这些配置指令背后的执行时间和先后顺序的奥秘.       现在就来看这样一个令人困惑的例子:     ? location /test {    ?     set $a 32;    ?     e

asp.net页面重定向方法小结

asp.net|页面 一.Transfer Execute Redirect重定向方法介绍 1.Server.Transfer方法: Server.Transfer("m2.aspx");//页面转向(服务器上执行). 服务器停止解析本页,保存此页转向前的数据后,再使页面转向到m2.aspx, 并将转向前数据加上m2.aspx页结果返回给浏览器.   2.Server.Execute方法: Server.Execute("m2.aspx"); 服务器保存此页转向前的

用JavaScript实现页面重定向功能的教程

  这篇文章主要介绍了用JavaScript实现页面重定向功能的教程,是JS入门学习中的基础知识,需要的朋友可以参考下 页面重定向是什么? 当你点击一个URL来访问一个网页X,但在内部你被定向到另一页Y,仅仅是因为页面重定向.这一概念是从不同于JavaScript 页面刷新 . 可能有各种原因,为什么想从原来的页面重定向.下面列出的几个原因: 如果不喜欢你的域名,可以重定向到一个新的.同时,要引导所有访问者到新网站.在这种情况下,可以保持旧的域名,但放在一个页面到一个页面重定向使所有的旧域名游客

用JavaScript实现页面重定向功能的教程_基础知识

 页面重定向是什么? 当你点击一个URL来访问一个网页X,但在内部你被定向到另一页Y,仅仅是因为页面重定向.这一概念是从不同于JavaScript 页面刷新 . 可能有各种原因,为什么想从原来的页面重定向.下面列出的几个原因:     如果不喜欢你的域名,可以重定向到一个新的.同时,要引导所有访问者到新网站.在这种情况下,可以保持旧的域名,但放在一个页面到一个页面重定向使所有的旧域名游客可以来到新的域名.     基于浏览器的版本,或者名字不同的页面,也可以根据不同的国家,而不是用服务器端网页重

asp.net 做了页面重定向,当列表页面放置长时间后点击详情页面链接,无法重定向,这是为什么呢?

问题描述 asp.net 做了页面重定向,当列表页面放置长时间后点击详情页面链接,无法重定向,这是为什么呢? asp.net 做了页面重定向,当列表页面放置长时间后点击详情页面链接,无法重定向,这是为什么呢? ----------------主要处理以前的页面链接,跳转到新的页面链接上去. 哪位好心人愿意回答我的问题呀? 解决方案 你是不是重定向时读取session中的信息了啊,session长时间会过期的.

PHP中从一页面重定向到另外一页面办法

PHP中从一个页面重定向到另外一个页面三种办法,供参考. 一.用HTTP头信息 也就是用PHP的HEADER函数.PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("Context-type: xxx/xxx"),页面的属性("No cache", "Expire")等等. 用HTTP头信息重定向到另外一个页面的方法如下: <? if (isset($url))

discuz nginx-disucz x3.2 nginx 如何批量做301重定向

问题描述 disucz x3.2 nginx 如何批量做301重定向 discuz x3.2 我把帖子伪静态为/{id}/1/1/thread.html 原来的伪静态是/thread-{id}-1-1.html 在nginx下我如何把/thread-{id}-1-1.html 全部 做301重定向 到/{id}/1/1/thread.html rewrite ^([^.]*)/([0-9]+)/([0-9]+)/([0-9]+)/thread.html$ $1/forum.php?mod=vie