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

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

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


1

2

3

4

5

6

7

8

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的域名去掉


1

2

3

4

server

 {

  listen       80;

  server_name www.test.com;

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


1

2

3

4

server {

                server_name test.com;

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

        }

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

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;

总结如下:


1

2

3

rewrite  ^/test.php  /new  permanent;       //重写向带参数的地址

rewrite  ^/test.php  /new?  permanent;      //重定向后不带参数

rewrite  ^/test.php   /new?id=$arg_id?  permanent;    //重定向后带指定的参数

 https://www.liurongxing.com/nginx-301-www-rewrite.html

 

时间: 2024-08-30 14:43:50

nginx 301跳转到带www域名方法rewrite(转)的相关文章

Nginx服务器中HTTP 301跳转到带www的域名的方法_nginx

从nginx的官方文档 documentation, 正确的nginx https 301跳转到带www域名方法的方法如下: HTTP 301跳转到带www域名方法     复制代码 代码如下: server {         listen       80;         server_name  example.org;         return       301 http://www.example.org$request_uri;     }     server {     

配置nginx 301跳转到www域名的例子

如一个网站www.111cn.net,域名解析的时候配置www.111cn.net和111cn.net都指向一个A记录,这两个域名都可以访问,但是这样会有一些弊端,详见:为什么越来越多的网站域名不加 'www' 前缀? 如何在nginx中配置,当访问111cn.net的时候自动301跳转到www.111cn.net呢? 在服务器/etc/nginx/conf.d目录的配置文件中,添加server块如下: Vim server {     server_name 111cn.net;     re

ASP.NET MVC 3中301永久重定向不带www域名到带www的域名

使用 ASP.NET 又喜欢跟进新技术的朋友可能已经知道,在 ASP.NET 4.0 中增加了 Response.RedirectPermanent() 方法来实现永久重定向,方法的作用在注释中解释的很清楚:执行从所请求 URL 到所指定 URL 的永久重定向,并提供用于完成响应的选项. 在 ASP.NET MVC 3 项目中,我们可以根据需要来使用以下写法实现永久重定向:  代码如下 复制代码 public ActionResult Index() {     return RedirectP

亲历百度作全站301跳转后的阵痛

众所周知,各大搜索引擎均认可301跳转,301跳转也被认为是网站大规模改版的救命草,除此之外,一级域名和二级域名解析同一个网站,也可用301跳转集中权重.因此301跳转被很多站长亲睐.笔者以前的网站用ASP程序,而且是虚拟主机,无法做全站的301跳转,只单独做了主域名***.com到二级域名www.***.com的跳转,没见太大的异常. 维尔颈椎病网是笔者第一个独立操作从0开始的网站,两个多月前因发现空间日志里百度索引大量的一级域名网页,而我的主推域名是带WWW的二级域名,所以狠心作了全站的30

apache中htaccess 301跳转设置汇总

1.重定向www.111cn.net 到 www.111cn.net 打开.htaccess文件,加入以下规则.  代码如下 复制代码 RewriteEngine On RewriteCond %{HTTP_HOST} !^www.111cn.net$ [NC] RewriteRule ^(.*)$ http://www.111cn.net/$1 [L,R=301] 2.重定向 old.com 到 www.111cn.net  代码如下 复制代码 RewriteEngine On Rewrite

网站如何301跳转?介绍301跳转设置的详细方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 我前俩天因为自己网站搬家,所以分别跟大家讲了404页面和discuz更换域名教程! 那么今天跟大家讲讲网站301跳转设置的详细方法! 众所周知,当网站换了域名之后,老域名为了避免权重的流失,肯定要设置网站301跳转到新的域名,那么,网站该如何跳转? 下面是301跳转的俩种方法: 1.当a.com跳转到b.com 打开a.com/1.html也

Nginx实现www域名的301跳转的配置

之前,微魔曾经跟大家分享了多篇关于Nginx的教程文章(请以"Nginx"为关键字在本站右侧搜索栏自行搜索),关于伪静态,有一篇集中汇总各个程序的Nginx伪静态的文章(传送),但是却遗忘了最常见的www域名跳转的问题,关于这个跳转,对SEO的友好程度见仁见智,在微魔看来,只是更喜欢自己的站点以www的形式示人而已. #伪静态# Nginx实现www域名的301跳转 1.将example.com定向到www.example.com   server {     listen 80;  

AMH面板配置网站301跳转WWW与无WWW域名例子

我们在建站的时候会根据自己的习惯把带有WWW或者不带WWW的域名作为主域名,对于这一点区分没有过多的严格规定是一定要用WWW还是非WWW域名,不过在国外站点中看到的非WWW站点多一些,而我们国内则比较倾向实用带有WWW的域名站点.   同时,在很多的所谓网站优化理论中有些所谓的高手提到一定要进行301跳转,如果用WWW就就要将非WWW跳转到WWW域名中,否则所谓的权重就会丢失.具体是不是真的老左也并不清楚,因为有用户提到在使用AMH面板的时候,不知道如何设置301跳转,因为可能习惯使用apach

LNMP下301跳转,域名绑定,升级和伪静态常用规则

越来越多的朋友用上了军哥的LNMP系统,最大的优点,就是省内存,像那些小内存的VPS,部落一直推荐大家使用lnmp,不过相对于新手来说,需要注意一些常见的问题,虽说我们从百度也能搜索到相关的答案,但有很多基本过时了,这里部落收集了一些301跳转,域名绑定,升级和伪静态等常见问题解答,大家可以看看. 常见lnmp管理命令 先来看看一些常用的命令: #1.2版本以后,不需要再执行/root/lnmp了,可以在任意位置执行lnmp命令   lnmp #会出现一些提示信息   lnmp restart