パソコンQ&A

PHPでwwwなしのページをwww付きのページに移動させる

サーバーの設定によってはドメインにwwwが付いているサブドメインでも、付いていないドメインでも同じページが表示できることがあります。
(wwwサーバとネームサーバ[DNSサーバ])
どちらかに統一したいと思うことがありますよね。
SSLを使っていた場合には特にこれはシビアなのでは?

セキュリティ証明書の名前が無効であるか、またはサイト名と一致しません。のセキュリティ警告が出るようだと見てる側が不便ですからね。
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;
}

△上に戻る

このページはリンクフリーです。設定などは自己責任で…
Copy Right kikky

kikky.net