nginx配置完rewrite浏览器提示将您重定向的次数过多

nginx配置完rewrite浏览器提示将您重定向的次数过多

为什么要给nginx配置rewrite?

因为公司要求访问 shidongyun.com的时候浏览器会自动跳转到www.shidong.com下面,专业术语叫“301跳转”百度了一番,nginx配置规则,用rewrite还有return进行重写301跳转。我这里用的是rewrite。
在这里插入图片描述

错误原因

1,在配置网站站点的时候service里面的service_name 规则不正确。错误配置规则如下:

只看service这部分错误的即可。service_name 不能把rewrite即将要重写的域名写进去,这样就造成了死循环了。比如:我要访问"shidongyun.com",利用rewrite在浏览器输入“shidongyun.com”的时候,重写到www.shidongyun.com下面。那么在service_name就不能写www.shidongyun.com这个域名。可以单独写一个service,也可以不用写。直接这样写:rewrite ^/(.*) http://www.shidongyun.com/$1 permanent;。

server {
    listen       80;
    server_name www.shidongyun.com shidongyun.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    root    "/data/wwwroot/shidong";
    location / {
        rewrite ^/(.*) http://www.shidongyun.com/$1 permanent;
        index  index.html index.htm index.php l.php;
        try_files $uri $uri/ /index.php?$query_string;
       autoindex  off;
    }
解决方案

1,把service下面的service_name 做正确的修改,删除www.shidongyun.com这个要重写的域名。

server {
    listen       80;
    server_name shidongyun.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    root    "/data/wwwroot/shidong";
    location / {
        rewrite ^/(.*) http://www.shidongyun.com/$1 permanent;
        index  index.html index.htm index.php l.php;
        try_files $uri $uri/ /index.php?$query_string;
       autoindex  off;
    }

在次在浏览器访问:shidongyun.com,我们看到截图中已经成功的重写过去了。但是访问域名的时候默认找的是网站安装时候的目录。并不是项目目录。解决方案如下:
在这里插入图片描述

1,需要配置rewrite重定向到指定的目录或者单独配置一个service虚拟机,然后把需要rewrite重定向的service主机跟域名配置好。配置信息如下:

我们先配置一个service虚拟机,要访问的域名,比如“shidongyun.com”,然后在配置一个service虚拟机,把要rewrite重写的域名放进去,比如:“www.shidong.com”,我们达到的效果就是访问“shidongyun.com”浏览器地址会自动跳转到“www.shidongyun,com”下面。
在这里插入图片描述
在这里插入图片描述
示例代码如下:

server {
    listen       80;
    server_name shidongyun.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    root    "/data/wwwroot/shidong";
    location / {
        index  index.html index.htm index.php l.php;
        rewrite ^/(.*) http://www.shidongyun.com/$1 permanent;
        try_files $uri $uri/ /index.php?$query_string;
       autoindex  off;
    }
    省略多余的部分.....只需要看rewrite跟service_name即可
}
server {
    listen       80;
    server_name www.shidongyun.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    root    "/data/wwwroot/shidong";
    location / {
        index  index.html index.htm index.php l.php;
        try_files $uri $uri/ /index.php?$query_string;
       autoindex  off;
    }
	省略多余的部分.....只需要看service_name即可。root设置项目路径。
    }

重启nginx服务器

/etc/init.d/nginx restart

[root@iZm5e8nyz28v9zr7lhb7moZ ~]# /etc/init.d/nginx restart
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]
[root@iZm5e8nyz28v9zr7lhb7moZ ~]# 

2,浏览器输入“shidongyun.com”自动跳转到“www.shidongyun.com”下面
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值