본문 바로가기
WordPress

wordpress 디렉토리에 만든 워드프레스 디렉토리 루트로 변경 서브도메인 멀티사이트로 전환 하는 방법 팁

by 하양동백 2020. 9. 15.

목차

    처음 워드프레스를 설치할 때 원하든 원하지 않든 잘 몰라서 디렉터리에 설치를 하는 경우가 종종 있습니다.

    사실 저도 처음 워드프레스를 설치할 때 디렉토리구조의 깔끔함을 위해서 워드프레스 설치용 파일을 /wp나, /wordpress 폴더를 만들어서 욱여넣곤 했습니다.

    요즘 호스팅업체에서 워드프레스 자동 설치를 지원할 때도 폴더에 설치할지 루트에 설치할지를 물어봅니다.

    잘 모르면 대부분 디렉토리 설치를 선택하기 마련입니다.

    wordpress 팁 시리즈 3

    이렇게 디렉토리에 워드프레스를 설치해 두면 워드프레스 멀티 사이트를 구축할 때 2차 도메인 주소를 사용할 수가 없습니다.

    멀티사이트로 나뉘기만 하면 되지, 서브도메인을 꼭 써야 하나?

    라고 생각하겠지만, 검색엔진들에 웹사이트를 등록할 때 각각이 멀티사이트를 등록할 수 있느냐 없느냐가 바로 디렉토리 구조냐 2차 도메인을 사용하느냐에 따라 결정되기 때문에 서브도메인 사용 문제는 중요합니다.

    정부기관이나, 초대형사이트, 유명인의 공식 사이트 등은 주소가 디렉토리 구조로 되어 있어도 등록을 해주지만, 일반인들의 신삥 사이트들은 디렉터리 구조의 멀티사이트는 사이트 등록이 거부됩니다.

     

    예전의 네이버는 사이트 영역과 웹문서영역이 분리되어 있어서 이 부분이 굉장히 중요한 문제였지만, 지금은 웹사이트 영역으로 단일화되고 통일되어서 디렉토리 구조로도 별도의 독립된 웹사이트 영역에 노출이 가능하기는 합니다.

    다만, 다음검색의 경우에는 웹사이트와 웹문서 영역이 여전히 나뉘어 있기 때문에 멀티사이트가 서브도메인으로 동작하느냐 아니냐는 여전히 중요한 문제입니다.

    그래서 혹시 필요하실지 모르겠지만, /wordpress 같은 폴더에 설치한 경우에 워드프레스 설치 경로를 루트로 변환하는 방법에 대해서 설명드리려고 합니다.

    먼저 가장 간단한 시나리오인, 싱글사이트 구조일 때는 워드프레스 index.php 파일을 루트 폴더로 복사해 넣고, mySQL에서 경로 정보만 변경하면 됩니다. 

    필요에 따라 더욱 간단한 방법도 있습니다. 

    설정 > 일반에서 사이트 주소(Site URL)를 루트(www.도메인. com)로 변경하고 워드프레스 주소(URL) 부분은 그대로 두면 됩니다.

    하지만 이미 멀티사이트를 서브디렉토리 구조로 만든 뒤에 서브도메인으로 변경하려고 할 때는 더더욱 그렇습니다.

    파일만 루트로 올려둔다고 해서 끝나는 문제가 아니기 때문에 굉장히 골치 아픈 작업입니다.

    멀티사이트의 주소 구조가 서브도메인이, 서브디렉토리의 구분은 wp-config.php 파일에서 

    define('SUBDOMAIN_INSTALL', false);

    의 값으로 결정됩니다.

    하지만 SUBDOMAIN_INSTALL값을 true로 바꾼다고 해서 곧바로 서브도메인 방식을 쓸 수 있게 되는 것은 아닙니다.

    define('PATH_CURRENT_SITE', '/');

    라는 부분을 변경해줘야 합니다.

    워드프레스가 디렉토리에 설치되어 있으면 이 부분이 

    define('PATH_CURRENT_SITE', '/wordpress_Dir/');

    이렇게 설정해 줍니다.

    그리고. htacess 파일에서 Rewrite 규칙의 차이도 생기는데요.

    RewriteEngine On
    
    RewriteBase /wordpress/
    
    RewriteRule ^index\.php$ - [L]
    
    
    
    # add a trailing slash to /wp-admin
    
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    
    RewriteCond %{REQUEST_FILENAME} -d
    
    RewriteRule ^ - [L]
    
    RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    
    RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    
    RewriteRule . index.php [L]

    위는 디렉토리에 설치된 서브디렉토리 방식의 워드프레스 멀티 사이트의. htacess 파일입니다.

    아래는 루트에 설치 한 서브도메인 방식의 워드프레스 멀티사이트의 .htacess 파일입니다.

    RewriteEngine On
    
    RewriteBase /
    
    RewriteRule ^index\.php$ - [L]
    
    
    
    # add a trailing slash to /wp-admin
    
    RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    
    RewriteCond %{REQUEST_FILENAME} -d
    
    RewriteRule ^ - [L]
    
    RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
    
    RewriteRule ^(.*\.php)$ $1 [L]
    
    RewriteRule . index.php [L]

    빨간색 글씨로 체크된 부분들이 서브디렉토리 멀티사이트와 서브도메인 멀티사이트의 차이입니다.

    이 부분들을 수정함으로써 서브디렉토리로 구축된 사이트들도 서브도메인으로 전환 할 수는 있습니다.

    다만 전환 과정에서 종종 사이트가 깨지는 일이 생기기도 하므로 작업 전 백업은 필수 입니다.

    wp-config.php와 .htacess 내용을 서브도메인으로 설정된 내용으로 바꿔줍니다.

    네트워크 사이트에서 블로그 주소를 변경합니다.

    mySQL에서도 경로 정보에 관한 내용을 전부 바꿔줘야 하는데 귀찮습니다.

    사실 더 간단한 방법은...멀티사이트 클론 플러그인을 설치하해서 사이트의 클론을 뜬 뒤 기존 사이트를 없애고 복구하는 방법이 가장 간단합니다.

    혹은 사이트 내보내기와 들여오기를 이용하는 것도 방법입니다.

    TIP. 이 과정에서 Internal Server Error가 발생하기도 합니다. 이 문제는 대체로 .htacess 파일 설정이 잘못된 경우가 많습니다.

    특히 RewriteBase 경로를 잘못 적은 경우가 많으니까 잘 살펴보시기 바랍니다.

    오늘 아침에 출근할 때 제 애마인 쏘렌토가 말썽을 부려서 곤혹스러웠네요.

    안구정화~예정화~

    반응형

    댓글