如何做nginx的重定向

 我来答
杜爷1号
2015-07-19 · 知道合伙人软件行家
杜爷1号
知道合伙人软件行家
采纳数:4973 获赞数:9186
毕业于福建农林大学,本科学士学位。从事IT行业3年,曾参与过多个大型项目的需求调研、软件研发。

向TA提问 私信TA
展开全部
  方法/步骤:
  由于网站的url由动态改为了伪静态,原先的动态网址依然能够访问,导致原先的url的权重无法转移,所以对原来的url做301重定向,并在百度站长中提交网站改版请求。
  网上的教程都是直接根据文件重定向的,对于单一入口的程序不适用,所以写下次教程。

  示例:
  if ($args ~* mod=item&act=view&id=(\d+) ) {
  rewrite ^/(.*)$ http://$host/item/$arg_id.html? permanent;
  }
  
  $args是当前url问号后面的部分,相当于$query_string
  $arg_id是id的值,格式为$arg_
  rewrite是url重写命令
  permanent代表的是返回301永久重定向状态码
  $host为当前网站的域名部分
  结尾的问号代表不会将url后面的参数一起带过去
  ^和$是代表的是正则匹配
  if条件中的(\d+)代表的是数字参数,如777
  注意:nginx中if命令不能嵌套,不能有多条件
  if条件中的等号只有一个
  注意if的空格问题
  if条件中可以有多条url重写语句
  重定向是基于文件的,示例中是适用于index.php?mod=a&act=b的结构
  如:rewrite 文件A 重定向到某地址
  示例:
  rewrite ^/good.php$ http://$host permanent;
  rewriet ^/good1.php$ http://$host/ permanent;
  如果需要对网站的域名进行重定向,可参考以下示例:
  将不带www的域名重定向到带www的域名
  server{
  ......
  server_name www.fsech.com fsech.com
  ......
  if ($host = fsech.com) {
  rewrite ^(.*)$ http://www.fsech.com permanent;
  }
  }
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
time陌言成殇
2015-07-19 · TA获得超过8.4万个赞
知道大有可为答主
回答量:1.4万
采纳率:91%
帮助的人:9478万
展开全部

由于网站的url由动态改为了伪静态,原先的动态网址依然能够访问,导致原先的url的权重无法转移,所以对原来的url做301重定向,并在百度站长中提交网站改版请求。


示例:

  if ($args ~* mod=item&act=view&id=(\d+) ) {
   rewrite ^/(.*)$ http://$host/item/$arg_id.html? permanent;
  }

$args是当前url问号后面的部分,相当于$query_string

$arg_id是id的值,格式为$arg_

rewrite是url重写命令

permanent代表的是返回301永久重定向状态码

$host为当前网站的域名部分

结尾的问号代表不会将url后面的参数一起带过去

^和$是代表的是正则匹配

if条件中的(\d+)代表的是数字参数,如777


注意:nginx中if命令不能嵌套,不能有多条件

if条件中的等号只有一个


注意if的空格问题

if条件中可以有多条url重写语句

重定向是基于文件的,示例中是适用于index.php?mod=a&act=b的结构

如:rewrite 文件A 重定向到某地址


示例:

rewrite ^/good.php$ http://$host permanent;

rewriet ^/good1.php$ http://$host/ permanent;


如果需要对网站的域名进行重定向,可参考以下示例:


将不带www的域名重定向到带www的域名

server{
    ......
    server_name www.fsech.com fsech.com
    ......
    if ($host = fsech.com) {
        rewrite ^(.*)$ http://www.fsech.com permanent;
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-01-13
展开全部
if ($http_referer !~ "^域名百度总乱屏蔽.*$"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite /.*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ /images.php;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式