最近我从 PHP平台迁移到基于Java的新系统.新网站有漂亮的网址,如 – http://mysite.com/science/2013/03/22/universe-is-older-than-previously-thought 旧网站的网址如-mysite.com/details.php?cid=37\u0026amp;id=239411 对
http://mysite.com/science/2013/03/22/universe-is-older-than-previously-thought
旧网站的网址如-mysite.com/details.php?cid=37\u0026amp;id=239411
对于搜索引擎结果,我们需要重定向包含/details.php的所有这些网址?到主页,比如urlredirect.com.我一直在查看这些示例https://www.varnish-cache.org/trac/wiki/VCLExampleRedirectInVCL,并在我的Varnish配置的redirect.vcl中提出了以下内容.
在vcl_recv函数中 –
if(req.url~ "^/details.php?$" ) { error 301 "Moved Temporarily"; }
但我很困惑vcl_error函数应该有什么?现在就像这样 –
else if(obj.status == 301 && req.url~ "^/details.php?$"){ set obj.http.Location = "http://bdnews24.com"; return (deliver); }
我觉得这很简单吗?与那些做过这件事的人分享经验真的很棒.
如果你想在Varnish 4.0中做到这一点,那么这样做的方式有所改变#default.vcl sub vcl_recv { if (req.req.url~ "^/details.php?$") { return (synth (750, "")); #This throws a synthetic page so the request won't go to the backend } } sub vcl_synth { if (resp.status == 750) { set resp.status = 301; set resp.http.Location = "http://bdnews24.com"; return(deliver); } }