http - Varnish 重定向

标签 http url redirect varnish

最近我从PHP平台转到了一个基于Java的新系统。新网站有漂亮的 URL,例如 -

http://mysite.com/science/2013/03/22/universe-is-older-than-previously-thought

旧网站的 URL 类似于 -mysite.com/details.php?cid=37&id=239411

对于搜索引擎结果,我们需要将所有这些包含 /details.php? 的 URL 重定向到主页,比如 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);
  }
}

关于http - Varnish 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15597174/

相关文章:

jquery:如果 url 包含 #work 则执行某些操作

http - Charles 代理可以从头开始编写 HTTP 请求吗?

php - LARAVEL 4 解决方案动态 SEO URLs 通缉

ruby - 来自 IO 的 RestClient 分段上传

image - Laravel Assets 网址

php - 使用 .htaccess 根据文件路径的一部分重定向到新域?

javascript - 无法从选择下拉菜单中重定向页面

php - Nginx 重写基本 URL 的路径

android - 如何将新成员添加到 Android 应用程序中的 MailChimp 列表?

java - 在 Android 中实现 HTTP 请求超时的最佳方法是什么?