サーバーの設定によってはドメインにwwwが付いているサブドメインでも、付いていないドメインでも同じページが表示できることがあります。
(wwwサーバとネームサーバ[DNSサーバ])
どちらかに統一したいと思うことがありますよね。
SSLを使っていた場合には特にこれはシビアなのでは?
セキュリティ証明書の名前が無効であるか、またはサイト名と一致しません。のセキュリティ警告が出るようだと見てる側が不便ですからね。
SSL通信はサーバとフルドメインが一致しているか(なりすましがないか)の証明でもあるので、SSLで正しく証明できるドメインは各サーバ(IPアドレス)に1つだけです。
これらを防ぐためにPHPでwwwがないドメインでのアクセスをwwwがあるページに移動する方法です。
(SSLの警告は1度は出ますが…)
if(!preg_match("/^www¥./",$_SERVER['HTTP_HOST'])){
header("HTTP/1.1 301 Moved Permanently");
if(isset($_SERVER["HTTPS"])?$_SERVER["HTTPS"]:""=="on"){
if($_SERVER["SERVER_PORT"]==443){
header("Location: https://www.".$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}else{
header("Location: https://www.".$_SERVER['HTTP_HOST'] .":".$_SERVER["SERVER_PORT"]. $_SERVER['REQUEST_URI']);
}
}else{
if($_SERVER["SERVER_PORT"]==80){
header("Location: http://www.".$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}else{
header("Location: http://www.".$_SERVER['HTTP_HOST'] .":".$_SERVER["SERVER_PORT"]. $_SERVER['REQUEST_URI']);
}
}
exit;
}
header("HTTP/1.1 301 Moved Permanently");
if(isset($_SERVER["HTTPS"])?$_SERVER["HTTPS"]:""=="on"){
if($_SERVER["SERVER_PORT"]==443){
header("Location: https://www.".$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}else{
header("Location: https://www.".$_SERVER['HTTP_HOST'] .":".$_SERVER["SERVER_PORT"]. $_SERVER['REQUEST_URI']);
}
}else{
if($_SERVER["SERVER_PORT"]==80){
header("Location: http://www.".$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}else{
header("Location: http://www.".$_SERVER['HTTP_HOST'] .":".$_SERVER["SERVER_PORT"]. $_SERVER['REQUEST_URI']);
}
}
exit;
}