変数名に referer と referrer をコード中で混合して使ってしまってハマった。
refererとreferrer本来、参照元という意味の英単語は”referrer”であるが、HTTPリファラの場合は意図的に”referer”と綴る場合がある。これは、HTTPが策定された時にヘッダ名を間違ったスペルで書いてしまい、それが今でも使われている、という歴史的経緯のためである。 前述の通り仕様上のヘッダ名は”referer”であるため、特にHTTPヘッダを直接扱うようなソフトウェアプログラムの場合、“referrer”と綴ると意図通りに動作しない場合すらある。
[引用元]: HTTPリファラ - Wikipedia
typo が歴史的経緯でそのまま残っているらしい。
勘弁して下さいよ。。。