2月 052012
 

Varnish redirect is pain.


sub vcl_recv {
  if (req.http.user-agent ~ "iP(hone|od)") {
    error 750 "Moved Temporarily";
  }
}

sub vcl_error {
  if (obj.status == 750) {
    set obj.http.Location = "http://www.example.com/iphoneversion/";
    set obj.status = 302;
    return(deliver);
  }
}

(via:Redirecting using VCL)
I just want to redirect. but should write code in two action.
This is it lack of maintenance, and I do not like.
I tried to make a vmod_redirect can be easily redirect.
Continue reading »


2月 052012
 

Varnishでリダイレクトを行うのは結構めんどくさいです。
たとえばuser-agentにiphoneかipodを含む場合にそれ用のページにリダイレクトする場合は以下のようになります


sub vcl_recv {
  if (req.http.user-agent ~ "iP(hone|od)") {
    error 750 "Moved Temporarily";
  }
}

sub vcl_error {
  if (obj.status == 750) {
    set obj.http.Location = "http://www.example.com/iphoneversion/";
    set obj.status = 302;
    return(deliver);
  }
}

(via:Redirecting using VCL)

ただリダイレクトしたいだけなのに二箇所のアクションでコードを書かなくてはいけません。
これは保守性に欠けると思いますし個人的にあまり好みではありません。

そこで簡単にリダイレクトができるvmod_redirectを作って見ました。
Continue reading »