I had a stubborn WordPress plugin that somehow was remembering the URL of the site it was installed on. It became a problem when I changed the site URL. Despite changing the URL everywhere I could think of, this particular plugin was calling CSS files for the URL of the original site. I did a search and replace in the site database and searched all files for any reference to that site but couldn’t find anything. I never did find the culprit. My workaround was to use varnish to rewrite the request before it hit the browser.
Thanks to this answer by Jorge Nerin on Stack Overflow, I found my answer on how to do this.
backend www {
.host = "www.example.com";
.port = "http";
}
sub vcl_recv {
if (req.http.host ~ "(?i)^(www.)?example.com$") {
set req.backend_hint = www;
}
}
In my case I had a default backend (no other backends configured) so my varnish config was simply adding these line in sub vcs_recv (varnish 4 syntax)
if (req.http.host ~ "(?i)^(www.)?old.host.name$") { set req.backend_hint = default; }
That did the trick!