본문으로 바로가기

.htaccess 파일 에서



(1) www 없을때 만들기


RewriteEngine On

RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]

RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]



(2) www 있을때 없애기


RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]



- 추가 


PHP 5.3 미만일때
<?php
$str = $HTTP_HOST;
if(!eregi("www",$str)) {
  header("location: http://www." . $str . $REQUEST_URI);
}
?>


1. www 없으면 www 로 이동하기

<?php
// www 없으면 www 로 이동하기
$base_URL = "";
if (!preg_match('/www/', $_SERVER['SERVER_NAME']) == true) { // www 없을때
    $base_URL = ($_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
    $base_URL .= ($_SERVER['SERVER_PORT'] != '80') ? $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] : "www.".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    
    //header("Location: ".$base_URL);
    
    echo "<script>\n";
    echo "location.href = '". $base_URL ."';\n";  // 현재창으로 전송
    //echo "parent.location.href='". $base_URL ."';\n";  // 부모창으로 전송
    echo "</script>\n";
}
//echo "www 없으면 www 로 이동하기<br>";
//echo $base_URL ."<br><br>";
?>


2. www 있으면 www 제거하기

<?php
// www 있으면 www 제거하기
$base_URL = "";
if (!preg_match('/www/', $_SERVER['SERVER_NAME']) == true) { // www 없을때
} else { // www 있을때
    $base_URL = ($_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
    $base_URL .= ($_SERVER['SERVER_PORT'] != '80') ? $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] : str_replace("www.","",$_SERVER['HTTP_HOST']).$_SERVER['REQUEST_URI'];
    
    // php 문서 최상단에 위치해야 정상 작동
    //header("Location: ".$base_URL);

    echo "<script>\n";
    echo "location.href = '". $base_URL ."';\n";  // 현재창으로 전송
    //echo "parent.location.href='". $base_URL ."';\n";  // 부모창으로 전송
    echo "</script>\n";
}
//echo "www 있으면 www 제거하기<br>";
//echo $base_URL ."<br><br>";
?>


3. https 로 이동하면 www 추가하기

<?php
// https 로 이동하면 www 추가 이동하기
$base_URL = "";
if (!preg_match('/www/', $_SERVER['SERVER_NAME']) == true) { // www 없을때
    if($_SERVER['HTTPS'] != "on"){
        $ssl_port = "";  //  443 포트를 사용하지 않는경우에 이용할 포트번호 입력
        if ($ssl_port == "") { 
            $base_URL = "https://www.".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        } else {
            $base_URL = "https://www.".$_SERVER['HTTP_HOST'].":".$ssl_port.$_SERVER['REQUEST_URI'];
        }
    
        // php 문서 최상단에 위치해야 정상 작동
        //header("Location: ".$base_URL);
        
        echo "<script>\n";
        echo "location.href = '". $base_URL ."';\n";  // 현재창으로 전송
        //echo "parent.location.href='". $base_URL ."';\n";  // 부모창으로 전송
        echo "</script>\n";
    }
} else { // www 있을때
    if($_SERVER['HTTPS'] != "on"){
        $ssl_port = "";  //  443 포트를 사용하지 않는경우에 이용할 포트번호 입력
        if ($ssl_port == "") { 
            $base_URL = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        } else {
            $base_URL = "https://".$_SERVER['HTTP_HOST'].":".$ssl_port.$_SERVER['REQUEST_URI'];
        }
        
        // php 문서 최상단에 위치해야 정상 작동
        //header("Location: ".$base_URL);
        
        echo "<script>\n";
        echo "location.href = '". $base_URL ."';\n";  // 현재창으로 전송
        //echo "parent.location.href='". $base_URL ."';\n";  // 부모창으로 전송
        echo "</script>\n";
    }
}
//echo "https 로 이동하면 www 추가 이동하기<br>";
//echo $base_URL ."<br><br>";
?>


4. https 로 이동하면 www 제거하기

<?php
// https 로 이동하면 www 제거하기
$base_URL = "";
if (!preg_match('/www/', $_SERVER['SERVER_NAME']) == true) { // www 없을때
    if($_SERVER['HTTPS'] != "on"){
        $ssl_port = "";  //  443 포트를 사용하지 않는경우에 이용할 포트번호 입력
        if ($ssl_port == "") { 
            $base_URL = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        } else {
            $base_URL = "https://".$_SERVER['HTTP_HOST'].":".$ssl_port.$_SERVER['REQUEST_URI'];
        }
    
        //header("Location: ".$base_URL);
        
        echo "<script>\n";
        echo "location.href = '". $base_URL ."';\n";  // 현재창으로 전송
        //echo "parent.location.href='". $base_URL ."';\n";  // 부모창으로 전송
        echo "</script>\n";
    }
} else { // www 있을때
    if($_SERVER['HTTPS'] != "on"){
        $ssl_port = "";  //  443 포트를 사용하지 않는경우에 이용할 포트번호 입력
        if ($ssl_port == "") { 
            $base_URL = "https://".str_replace("www.","",$_SERVER['HTTP_HOST']).$_SERVER['REQUEST_URI'];
        } else {
            $base_URL = "https://".str_replace("www.","",$_SERVER['HTTP_HOST']).":".$ssl_port.$_SERVER['REQUEST_URI'];
        }
    
        // php 문서 최상단에 위치해야 정상 작동
        //header("Location: ".$base_URL);
        
        echo "<script>\n";
        echo "location.href = '". $base_URL ."';\n";  // 현재창으로 전송
        //echo "parent.location.href='". $base_URL ."';\n";  // 부모창으로 전송
        echo "</script>\n";
    }
}
//echo "https 로 이동하면 www 제거하기<br>";
//echo $base_URL ."<br><br>";
?>



참고자료
http://www.happyjung.com/lecture/1805
원문 링크 : http://www.happyjung.com/lecture/102