tech note

インフラ技術や車についてつぶやいていくブログ

BIG-IP iRule HTTP::redirect 構文例 自身にRedirectしながら、Redirectループを防ぐ

f:id:tea_cat:20180911023333j:plain

iRule構文例

when HTTP_REQUEST {
if { [HTTP::host] equals "example.com" } {
        if { [HTTP::uri] equals "/sp.html" or [HTTP::uri] equals "/pc.html" } {
            return
        } else {
            if { [HTTP::header User-Agent] matches_regex "iPhone|iPad|iPod|Android" } {
                HTTP::redirect "http://example.com/sp.html"
            } else {
                HTTP::redirect "http://example.com/pc.html"
            }
        }
    }
}

User-Agentという情報でPC向けかSP向けかを分ける例ですが、そのまま書くと
自身に再度アクセスが来るのでリダイレクトループが発生してしまいます。
そのため、特定URIのときはreturnして何もしないようにするif文を先に入れる事で、
リダイレクトループを防げます。