본문 바로가기
블로그 운영

워드프레스 멀티사이트 만들기와 서브도메인 vs 서브디렉토리

by 낯선.공간 2018. 6. 29.

목차

    취미삼아 공부삼아 워드프레스 블로그를 만들어 두곤 있는데요.

    호스팅 하나 받아서 블로그 하나 운용하자니 왠지 아까운 생각이 좀 들죠..

    그러다보니 멀티사이트 구축을 해 두게 되는데요.

    워드프레스로 멀티사이트 만들기는 워낙에 많은 글이 있으니 특별할 건 없겠지만...

    몇 가지 검색을 해봐도 나오지 않는 것들에 대해서 짚어 볼까 해요.

    일단 그 전에 Wordpress 멀티사이트 구축하는 방법도 한 번 훑어 보죠.

    일단 워드프레스를 설치 할 때부터 좀 신경 써야 하는 부분이 있어요.

    바로 서브도메인인데요.

    워드프레스 멀티사이트를 구축할 때 좋은 점 중의 한 가지가 바로, 호스팅에서 서브도메인을 지원하지 않아도 서브도메인 부여가 된다는 점이죠.

    가상 서브도메인인데요.

    일전에 워드프레스 관련글 포스팅에 한 번 언급해 둔 적이 있죠.

    호스팅 하드 용량이 적긴 하겠지만 월 500원짜리 호스팅에서도 서브도메인으로 멀티사이트 구축이 된다는 건 좋은 점이죠.

    그런데 워드프레스를 설치할 때 워드프레스 설치를 디렉토리에 해 두게 되면, 멀티사이트는 자동으로 서브도메인이 아닌 서브디렉토리 방식으로만 만들어지게 됩니다.

    이 부분에 대한 해결 방법은 나중에 다루도록 하죠.

    아무튼 이 글은 워드프레스가 루트디렉토리에 설치 되었다는 가정하에 진행하겠습니다.

    먼저 wp-config.php 파일에서 

    /* That’s all, stop editing! Happy blogging. */

    를 찾습니다.

    그 바로 다음 줄에 

    define('WP_ALLOW_MULTISITE', true); 

    를 추가해 줍니다.

    FTP를 통해서 올리거나, EditPlus의 FTP에디팅 기능으로 수정하시면 편합니다.

    파일을 수정해서 올린 뒤에 관리자 화면을 새로 고침하면 도구 메뉴에 "네트워크 설치" 메뉴가 떠 있는 것이 보입니다.

    메뉴에 들어가면 

    워드프레스 사이트의 네트워크 생성을 하게 됩니다.

    이 때 멀티사이트 방식을 가상호스트(서브도메인) 방식으로 할 것인지, 서브 디렉토리 방식으로 할 것인지를 물어 봅니다.

    이 화면이 나오려면 워드프레스가 /wordpress/ 폴더가 아닌 루트에 설치 되어야 합니다.

    물론 디렉토리에 설치되어 있어도 바꿀 수는 있습니다만...쉽지 않습니다.

    "네트워크 활성화" 안내가 나옵니다.

    이 화면은 실제로는 서브디렉토리로 설정되고 있는 화면입니다. 나중에 서브도메인 설치 화면과 비교해 드릴게요.

    바로 위와 같은 화면에서 1번과 2번을 각각 wp-config.php와 .htacess 파일에 복사 해 주면 됩니다.

    1번 항목은 wp-config.php /* That’s all, stop editing! Happy blogging. */ 윗쪽으로  추가 하고

    2번 항목은 .htacess 파일에 추가 한 뒤에 재 로그인 합니다.

    관리자 화면 상단에 집이 여러채 모여 있는 아이콘과 내사이트가 생기면 워드프레스 멀티사이트 만들기는 성공입니다.

    그런데 말이죠.

    처음 워드프레스를 설치할 때 잘 몰라서, 혹은 알아도 깔끔한 정리를 위해서 워드프레스 파일들을 wp라든지, wordpress라든지 폴더를 만들어서 설치를 하게 되면 멀티사이트는 서브디렉토리 방식으로만 설치됩니다.

    서브디렉토리로 구축된 웹사이트는 네이버 사이트 등록 때 불이익을 받게 되는데요.

    정말 대단히 공적인 사이트가 아닌 이상 네이버는 서브도메인이 아닌 서브디렉토리 웹사이트는 별도 사이트로 인식해 주지 않습니다.

    요즘 웬만하면 대부분의 무료계정이나 블로그 서비스등도 서브도메인으로 계정을 주니까요.

    페이스북이나 인스타그램 정도돼서 각자 개인계정주소를 서브디렉토리로 주어도, 유명인이 아닌 이상 네이버에서는 별도 사이트로 등록을 해주질 않죠.

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

    define('SUBDOMAIN_INSTALL', false);

    이 부분이 true냐 false냐가 일단 가장 중요한 차이 점입니다.

    하지만 SUBDOMAIN_INSTALL만 true가 된다고 해서 서브도메인으로 동작하지는 않습니다.

    바로 

    define('PATH_CURRENT_SITE', '/');

    이 부분인데요.

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

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

    이렇게 설정됩니다.

    그리고 .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 경로가 잘못되는 경우가 종종 있습니다.


    반응형