Назад | Перейти на главную страницу

Как заставить Apache 301 редирект работать с Varnish?

Я пытаюсь добавить несколько перенаправлений со старых доменов на новые домены, которые я сделал перед использованием простых перенаправлений 301 в моих файлах vhost, например:

<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, чтобы добавить туда перенаправления, но столкнулся с проблемами - это лучший вариант?

Я до сих пор не понимаю, почему указанный выше vhost apache не распознавался, возможно, из-за чего-то в vcl-файле varnish, который его перехватил, но я смог решить эту проблему, добавив туда перенаправление, следуя инструкциям здесь 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);
   }
 }