需求场景
朋友让我帮忙挂一个网页,有点类似“钓鱼”的性质(开玩笑,没这么严重),就是找一个类似的域名,把原网站其中一个网页完全复制过来,修改其中的内容,然后给甲方看。但是,这个新域名的其他 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,如需转载请自行联系原作者