刘荣星的博客

  • 留言
  • About
一个关注Linux/BSD运维等相关知识的博客
  1. 首页
  2. Nginx
  3. 正文

nginx 301跳转到带www域名方法rewrite

2012-04-25 55159点热度 0人点赞 6条评论

首先一、得在你的域名管理里面定义 test.com和www.test.com指向你的主机ip地址,我们可以使用nslookup命令测试:
直接输入 nslookup test.com和nslookup www.test.com 都有指向ip的A记录即可。

第二、我们才能在nginx里面配置rewrite规则。
打开 nginx.conf文件找到你的server配置段:

server
{
listen 80;
server_name www.test.com test.com;
if ($host != 'www.test.com' ) {
    rewrite ^/(.*)$ http://www.test.com/$1 permanent;
}
........

这样就是用户直接访问test.com直接跳转的www.test.com。
即让不带www的域名跳转到带www的域名。

办法2:在配置文件里面写两个server,第一个里面把不带www的域名去掉

server
 {
  listen       80;
  server_name www.test.com;

在配置文件的最下面添加上,这样就可以了。

server {
                server_name test.com;
                rewrite ^(.*) http://www.test.com/$1 permanent;
        }

如果有多个不同的域名都绑定在同一个目录下不带3W的301到带3W的方法和上面的一样
在vhost的完整配制里后面加上

server {
server_name test1.com;
rewrite ^(.*) http://www.test1.com$1 permanent;
}

server {
server_name test2.com;
rewrite ^(.*) http://www.test2.com$1 permanent;
}

server {
server_name test3.com;
rewrite ^(.*) http://www.test3.com$1 permanent;
}

301永久跳转,当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息中的状态码的一种,表示本网页永久性转移到另一个地址。
302临时跳转,也是状态码的一种,意义是暂时转向到另外一个网址。
二者的区别主要是,一句话,302容易被搜索引擎视为spam,301则不会。
permanent代表301永久跳转,改为redirect则为302临时跳转。
nginx官方rewrite文档:传送门

默认的情况下,Nginx 在进行 rewrite 后都会自动添加上旧地址中的参数部分,而这对于重定向到的新地址来说可能是多余。
虽然这也不会对重定向的结果造成多少影响,但当你注意到新地址中包含有多余的“?xxx=xxx”时,心里总还是会觉得不爽,也可能会导致你的网站统计数据不准确。

例如:
把 http://example.com/test.php?para=xxx 重定向到 http://example.com/new

若按照默认的写法:
rewrite ^/test.php(.*) /new permanent;
重定向后的结果是:

http://example.com/new?para=xxx

如果改写成:
rewrite ^/test.php(.*) /new? permanent;
那结果就是:

http://example.com/new

所以,关键点就在于“?”这个尾缀。
假如又想保留某个特定的参数,那又该如何呢?可以利用Nginx本身就带有的$arg_PARAMETER参数来实现。

例如:
把 http://example.com/test.php?para=xxx&p=xx 重写向到 http://example.com/new?p=xx
可以写成:
rewrite ^/test.php /new?p=$arg_p? permanent;

总结如下:

rewrite  ^/test.php  /new  permanent;       //重写向带参数的地址
rewrite  ^/test.php  /new?  permanent;      //重定向后不带参数
rewrite  ^/test.php   /new?id=$arg_id?  permanent;    //重定向后带指定的参数
标签: Linux Nginx
最后更新:2015-06-12

JavasBoy

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • csl

    高手呀!赞一个。

    2013-07-23
    回复
  • 霖一

    哇哦,新手很受用!

    2014-11-02
    回复
  • 暮春

    受教了,正好把我的博客也配置上。

    2015-03-02
    回复
  • 天涯海角

    很好,不过有个问题,别的域名也要转到www

    2016-01-31
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    回复 霖一 取消回复

    最新 热点 随机
    最新 热点 随机
    CentOS7 python2 安装 elasticsearch 模块 在VMWare Workstation虚拟机里使用 yubikey Gentoo Gnome 登陆界面开启触摸板轻击 python3去除emoji表情符号 记录几个内网广播包 Linux Mint 20 gnome-terminal 使用等距更纱黑体 SC字体
    nginx 301跳转到带www域名方法rewrite nVida GeForce 8500 GT DSDT驱动完善 黑屏解决方法、微软正版验证解决方法 我的Mac OS X能上网了 再次AMD_PC装苹果系统 Fraps跑跑专用录制视频软件及显卡设置
    分类
    • After Effects / 20篇
    • Apple / 5篇
    • Archlinux / 4篇
    • Bash / 2篇
    • Cinema 4D / 1篇
    • Docker / 1篇
    • eMule / 2篇
    • FreeBSD / 9篇
    • Gentoo / 1篇
    • Go / 2篇
    • gpg / 1篇
    • Graphics / 15篇
    • Haproxy / 1篇
    • ingress / 1篇
    • IntelliJ_IDEA / 1篇
    • java / 2篇
    • kafka / 1篇
    • Linux / 24篇
    • MySQL / 3篇
    • network / 3篇
    • Network / 4篇
    • Nginx / 5篇
    • Perl / 4篇
    • Python / 9篇
    • Python 操作符 / 1篇
    • Python 正则 / 2篇
    • rose / 1篇
    • Script / 4篇
    • Tornado / 1篇
    • Vim / 5篇
    • 学习 / 24篇
    • 电脑 / 29篇
    • 那不勒斯 / 1篇
    • 随笔 / 45篇
    标签聚合
    MAC Graphics python After Effects Linux FreeBSD 双系统 AE

    COPYRIGHT © 2025 刘荣星的博客. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang