site_urlに於けるHTTPS判定について
Posted: 2014年3月20日(木) 21:32
いつもお世話になっております。
前段のリバースプロキシ側でHTTPS処理をする場合、後段のhttpdなどは素のhttp接続でよいのでそうする場合が多いのですが、MODXの[(site_url)]の判定処理をいつも書換えています。
最近のバージョンですと少し位置が変わりましたが、 initialize.inc.php の150行目近辺に is_ssl()という関数があります。
ここで $_SERVER['HTTPS'] を使って判定しているのですが、nginx他でリバースプロキシを行い、接続時にHTTPS Onを送ると HTTP_HTTPS とHTTP_が付くことになります。
よって、 $_SERVER['HTTP_HTTPS'] も判定に加えてもらえると色々と使いやすいです。
if((isset($_SERVER['HTTP_HTTPS']) && strtolower($_SERVER['HTTP_HTTPS']) == 'on') || (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || $_SERVER['SERVER_PORT'] == $https_port)
nginxなどと組み合わさるケースが多くなったためか、他のCMSでも似たような要望と改善がされているみたいです。。
前段のリバースプロキシ側でHTTPS処理をする場合、後段のhttpdなどは素のhttp接続でよいのでそうする場合が多いのですが、MODXの[(site_url)]の判定処理をいつも書換えています。
最近のバージョンですと少し位置が変わりましたが、 initialize.inc.php の150行目近辺に is_ssl()という関数があります。
ここで $_SERVER['HTTPS'] を使って判定しているのですが、nginx他でリバースプロキシを行い、接続時にHTTPS Onを送ると HTTP_HTTPS とHTTP_が付くことになります。
よって、 $_SERVER['HTTP_HTTPS'] も判定に加えてもらえると色々と使いやすいです。
if((isset($_SERVER['HTTP_HTTPS']) && strtolower($_SERVER['HTTP_HTTPS']) == 'on') || (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || $_SERVER['SERVER_PORT'] == $https_port)
nginxなどと組み合わさるケースが多くなったためか、他のCMSでも似たような要望と改善がされているみたいです。。