我正在尝试添加一些从旧域到新域的重定向,这些重定向之前我已经在我的 vhost 文件中使用简单的 301 重定向完成过,例如:
<VirtualHost *:8080>
ServerName olddomain.com
ServerAlias www.olddomain.com
Redirect 301 / http://www.newdomain.com/
</VirtualHost>
但是这在我的 vhost 文件中不起作用,我猜测这是因为 Varnish 服务器在 Apache 前面运行,但不确定如何修复它。主站点在同一个 vhost 文件中使用相同的端口,例如:
<VirtualHost *:8080>
ServerName www.newdomain.com
...
</VirtualHost>
我遗漏了什么?我尝试使用 varnish 配置文件在其中添加重定向,但遇到了问题 - 这是最好的选择吗?
答案1
我仍然不清楚为什么上面的 apache vhost 无法被识别,也许是因为 varnish vcl 文件中的某些内容拦截了它,但我最终能够通过在那里添加重定向来解决这个问题,按照这里的说明https://www.varnish-cache.org/trac/wiki/VCLExampleRedirectInVCL
sub vcl_recv {
if (req.http.host ~ "^(www\.)?oldexample\.com$") {
error 750 "http://www.example.com/newlocation";
} else if (req.http.host ~ "^(www\.)?ancientexample\.com$") {
error 750 "http://newsite.com/ancient"
}
}
sub vcl_error {
if (obj.status == 750) {
set obj.http.Location = obj.response;
set obj.status = 302;
return(deliver);
}
}