{"id":917,"date":"2012-02-05T03:12:54","date_gmt":"2012-02-04T18:12:54","guid":{"rendered":"http:\/\/blog.xcir.net\/?p=917"},"modified":"2013-01-01T02:39:11","modified_gmt":"2012-12-31T17:39:11","slug":"varnish-redirect-operation-to-easylibvmod-rewrite","status":"publish","type":"post","link":"https:\/\/blog.xcir.net\/?p=917","title":{"rendered":"Varnish redirect operation to easy(libvmod-redirect)"},"content":{"rendered":"<p>Varnish redirect is pain.<\/p>\n<pre class=\"brush: plain; \">\n\r\nsub vcl_recv {\r\n  if (req.http.user-agent ~ &quot;iP(hone|od)&quot;) {\r\n    error 750 &quot;Moved Temporarily&quot;;\r\n  }\r\n}\r\n\r\nsub vcl_error {\r\n  if (obj.status == 750) {\r\n    set obj.http.Location = &quot;http:\/\/www.example.com\/iphoneversion\/&quot;;\r\n    set obj.status = 302;\r\n    return(deliver);\r\n  }\r\n}\r\n\n<\/pre>\n<p>(via:<a href=\"https:\/\/www.varnish-cache.org\/trac\/wiki\/VCLExampleRedirectInVCL\">Redirecting using VCL<\/a>)<br \/>\nI just want to redirect. but should write code in two action.<br \/>\nThis is it lack of maintenance, and I do not like.<br \/>\nI tried to make a vmod_redirect can be easily redirect.<br \/>\n<!--more--><br \/>\nIf you do the same thing and just<\/p>\n<pre class=\"brush: plain; \">\n\r\nimport redirect;\r\nsub vcl_recv {\r\n   if (req.http.user-agent ~ &quot;iP(hone|od)&quot;) {\r\n      error(redirect.location(302,&quot;http:\/\/www.example.com\/iphoneversion\/&quot;) , &quot;Moved Temporarily&quot;);\r\n   }\r\n}\r\n\n<\/pre>\n<p>If you do not need reason phrase<\/p>\n<pre class=\"brush: plain; \">\n\r\nimport redirect;\r\nsub vcl_recv {\r\n   if (req.http.user-agent ~ &quot;iP(hone|od)&quot;) {\r\n      error(redirect.location(302,&quot;http:\/\/www.example.com\/iphoneversion\/&quot;));\r\n   }\r\n}\r\n\n<\/pre>\n<p><strong>note:require enclose in error method.<\/strong><\/p>\n<p>download here.<br \/>\n<a href=\"https:\/\/github.com\/xcir\/libvmod-redirect\">libvmod-redirect<\/a><\/p>\n<p>&#8212;<br \/>\n2012-02-17<br \/>\nchange name from vmod_rewrite to vmod_redirect.<\/p>\n<p>\u65e5\u672c\u8a9e\u306e\u8a18\u4e8b\u306f<a href=\"http:\/\/blog.xcir.net\/index.php\/2012\/02\/varnish%e3%81%a7%e7%b0%a1%e5%8d%98%e3%81%ab%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%8c%e3%81%a7%e3%81%8d%e3%82%8bvmod%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9fvmod_rewrite\/\" title=\"Varnish\u3067\u7c21\u5358\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u304c\u3067\u304d\u308bVMOD\u4f5c\u3063\u3066\u307f\u305f(vmod_redirect)\">\u3053\u3063\u3061<\/a><\/p>\n<div class='wp_social_bookmarking_light'>        <div class=\"wsbl_hatena\"><a href='\/\/b.hatena.ne.jp\/add?mode=confirm&url=https%3A%2F%2Fblog.xcir.net%2F%3Fp%3D917&title=Varnish%20redirect%20operation%20to%20easy%28libvmod-redirect%29' title='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='https:\/\/blog.xcir.net\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/hatena.gif' alt='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' title='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' width='16' height='12' class='wp_social_bookmarking_light_img' \/><\/a><\/div>        <div class=\"wsbl_hatena_users\"><a href='\/\/b.hatena.ne.jp\/entry\/https:\/\/blog.xcir.net\/?p=917' title='\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af - Varnish redirect operation to easy(libvmod-redirect)' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='\/\/b.hatena.ne.jp\/entry\/image\/https:\/\/blog.xcir.net\/?p=917' alt='\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af - Varnish redirect operation to easy(libvmod-redirect)' title='\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af - Varnish redirect operation to easy(libvmod-redirect)'   class='wp_social_bookmarking_light_img' \/><\/a><\/div>        <div class=\"wsbl_facebook\"><a href='http:\/\/www.facebook.com\/share.php?u=https%3A%2F%2Fblog.xcir.net%2F%3Fp%3D917&t=Varnish%20redirect%20operation%20to%20easy%28libvmod-redirect%29' title='Facebook \u306b\u30b7\u30a7\u30a2' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='https:\/\/blog.xcir.net\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/facebook.png' alt='Facebook \u306b\u30b7\u30a7\u30a2' title='Facebook \u306b\u30b7\u30a7\u30a2' width='16' height='16' class='wp_social_bookmarking_light_img' \/><\/a><\/div>        <div class=\"wsbl_linkedin\"><a href='\/\/www.linkedin.com\/shareArticle?mini=true&url=https%3A%2F%2Fblog.xcir.net%2F%3Fp%3D917&title=Varnish%20redirect%20operation%20to%20easy%28libvmod-redirect%29' title='LinkedIn \u306b\u30b7\u30a7\u30a2' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='https:\/\/blog.xcir.net\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/linkedin.png' alt='LinkedIn \u306b\u30b7\u30a7\u30a2' title='LinkedIn \u306b\u30b7\u30a7\u30a2' width='16' height='16' class='wp_social_bookmarking_light_img' \/><\/a><\/div>        <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/blog.xcir.net\/?p=917\" data-text=\"Varnish redirect operation to easy(libvmod-redirect)\" data-lang=\"ja\">Tweet<\/a><\/div><\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>Varnish redirect is pain. sub vcl_recv { if (req.http.user-agent ~ &quot;iP(hone|od)&quot;) { error 750 &quot; <a href='https:\/\/blog.xcir.net\/?p=917' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,3],"tags":[5,34,37],"class_list":["post-917","post","type-post","status-publish","format-standard","hentry","category-english","category-3","tag-varnish","tag-vmod","tag-vmod_rewrite","category-24-id","category-3-id","post-seq-1","post-parity-odd","meta-position-corners","fix"],"_links":{"self":[{"href":"https:\/\/blog.xcir.net\/index.php?rest_route=\/wp\/v2\/posts\/917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.xcir.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.xcir.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.xcir.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.xcir.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=917"}],"version-history":[{"count":14,"href":"https:\/\/blog.xcir.net\/index.php?rest_route=\/wp\/v2\/posts\/917\/revisions"}],"predecessor-version":[{"id":1356,"href":"https:\/\/blog.xcir.net\/index.php?rest_route=\/wp\/v2\/posts\/917\/revisions\/1356"}],"wp:attachment":[{"href":"https:\/\/blog.xcir.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.xcir.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.xcir.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}