需求场景
朋友让我帮忙挂一个网页,有点类似“钓鱼”的性质(开玩笑,没这么严重),就是找一个类似的域名,把原网站其中一个网页完全复制过来,修改其中的内容,然后给甲方看。但是,这个新域名的其他 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 文件
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式