nginx location 配置中 try_files, alias, root, index 的

需求场景

朋友让我帮忙挂一个网页,有点类似“钓鱼”的性质(开玩笑,没这么严重),就是找一个类似的域名,把原网站其中一个网页完全复制过来,修改其中的内容,然后给甲方看。但是,这个新域名的其他 URL 都需要跳转到原域名。

假设,原域名为 a.com, 新域名为 b.com。规则是:

http://www.b.com/a/b.aspx?id=1024 显示“钓鱼”页,但是 http://www.b.com 需要 301 跳转到 http://www.a.com

解决方案

起初随手写了一套配置,怎么也满足不了需求,后来翻了一本关于 Nginx 的书,才有了思路。

配置如下

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

        root /home/zhongwei/xxx/;

        location = /a/b.aspx {
                alias /home/zhongwei/xxx/;
                try_files index.html =404;
        }

        location /a/ {
                alias /home/zhongwei/xxx/;
        }

        location / {
                return 301 http://www.a.com$request_uri;
        }
}

alias 与 root 的区别

  • root 会将 location 匹配的路径缀在 root 参数的后面

  • alias 则是将 location 匹配的路径的目录部分,替换为 alias 的参数

单独加一条 /a/ 的规则

目的是,将资源文件的目录指向本地对应目录。

try_files 与 index 的区别

  • index 是处理请求路径结尾是 / 的情况。显然这里的 b.aspx 的请求不符合这个要求

  • 这里则是强制将请求指向本地的 index.html 文件










本文转自 蓝叶子Sheep 51CTO博客,原文链接:http://blog.51cto.com/dellinger/2069913,如需转载请自行联系原作者
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值