워드프레스 멀티사이트 비활성화하기 (싱글 사이트로 변환)

하나의 워드프레스 설치로 여러 개의 사이트를 운영하려는 경우 멀티사이트를 고려할 수 있습니다. 많은 사이트를 운영해야 한다면 멀티사이트가 필수일 수 있습니다. 하지만 멀티사이트를 운영하다 보면 이상한 오류가 발생하기도 하고, 호환이 되지 않는 플러그인도 있을 수 있습니다.

이 블로그의 하위 디렉터리에 멀티사이트를 설치하여 운영하고 있었습니다. 뉴스페이퍼 테마를 테스트할 겸, 또 자바스트립트를 공부하면서 정리하는 용도로 시작했지만 지금은 방치되고 있습니다.

서브 디렉터리에 설치된 멀티사이트의 네트워크 알림판에 접속하려고 시도하니 로그인이 되지 않는 현상이 발생했습니다. 갑자기 이런 증상이 나타나서 당황했는데요. 해킹이 당한 것은 아닌지 의심이 되었지만, 워드프레스가 업데이트되면서 서브 디렉터리에 설치되는 멀티사이트의 .htaccess와 wp-config.php 파일에 추가되는 코드가 변경되면서 발생하는 문제였던 것 같습니다. 어떻게 하여 겨우 네트워크 대시보드에 로그인해서 wp-config.php 파일과 .htaccess 파일에 추가되는 규칙을 새로운 규칙으로 대체했지만, 이번에는 리디렉션 오류(Too Many Redirects)가 발생했습니다. 이번 기회에 멀티사이트를 비활성화하고 싱글 사이트로 바꾸기로 했습니다.

워드프레스 멀티사이트 비활성화하기 (싱글 사이트로 변환)

워드프레스 멀티사이트를 기본 디렉터리가 아닌 하위 폴더에 설치하는 경우, .htaccess 파일과 wp-config.php 파일에 추가되는 규칙이 바뀐 것 같습니다. 최신 버전에서는 다음과 같은 규칙이 제시되네요.

.htaccess 파일:

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /blog/
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]

wp-config.php 파일:

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
define( 'DOMAIN_CURRENT_SITE', 'www.thewordcracker.com' );
define( 'PATH_CURRENT_SITE', '/blog/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

blog와 사이트 주소는 적절히 변경하시기 바랍니다.

www.thewordcracker.com/blog에 멀티사이트를 설치할 때 위와 같은 규칙이 사용됩니다.

멀티사이트를 비활성화하고 싶은 경우 다음과 같은 과정으로 진행합니다.

사이트 백업하기

먼저는 사이트를 철저히 백업하시기 바랍니다. 멀티사이트의 경우 플러그인으로 백업이 가능할 수도 있지만, 경험상 수동으로 백업하는 것이 확실한 것 같습니다. 데이터와 DB를 백업해야 합니다.

플러그인을 사용하려는 경우 다음 글을 참고해보세요:

나머지 사이트 삭제하기

내 사이트 » 네트워크 관리자 » 사이트 » 모든 사이트로 이동하여 기본 사이트(메인 사이트)를 제외한 모든 사이트를 삭제합니다.

메인 사이트가 아닌 멀티사이트 내의 다른 사이트를 싱글 사이트로 변경하는 작업은 불가능합니다. 대신, 데이터 내보내기를 통해 데이터를 내보낸 후에 새로 워드프레스 사이트를 생성하고 데이터 가져오기를 통해 콘텐츠를 옮길 수 있습니다. 이 경우 테마와 플러그인을 새로 설치하고 설정도 새롭게 해야 하는 작업이 동반됩니다.

불필요한 사용자 삭제하기

사이트에 더 이상 접속하기를 원치 않는 사용자들을 모두 제거합니다.

내 사이트 » 네트워크 관리자 » 사용자 » 모든 사용자에서 사용자들을 검토하여 불필요한 사용자들은 삭제하시기 바랍니다.

WP Config에서 멀티사이트 코드 제거하기

FTP/SFTP를 통해 접속하여 멀티사이트가 설치된 폴더 내의 wp-config.php 파일을 열어서 워드프레스와 관련된 코드를 모두 삭제합니다.

wp-config.php 파일 수정 방법은 "워드프레스에서 wp-config.php / htaccess 파일 수정하기"를 참고해보세요.

워드프레스 구성 파일에서 아래에 표시된 라인들을 제거합니다.

워드프레스 멀티사이트 비활성화하기 (싱글 사이트로 변환)

.htaccess 파일을 싱글 워드프레스 사이트의 .htaccess 버전으로 되돌리기

다음으로 해야 할 작업은 웹호스팅 환경이 Apache 기반인 경우 .htaccess 파일에서 멀티사이트 부분의 코드를 제거하는 것입니다. 이 작업은 조금 까다로울 수 있습니다. 기본 워드프레스 .htaccess 파일은 대부분의 상황에서 다음과 같습니다.

# BEGIN WordPress

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

자세한 정보는 워드프레스 공식 문서를 참고해보세요.

멀티사이트 테이블 삭제하기

이제 비-멀티사이트 모드에서 사이트가 정상적으로 작동할 것입니다. 그러나 몇 가지 정리 작업을 수행해야 합니다. 먼저 멀티사이트와 관련된 데이터베이스(DB) 테이블을 삭제하는 것입니다.

  • wp_blogs
  • wp_blog_versions
  • wp_registration_log
  • wp_signups
  • wp_site
  • wp_meta

WordPress MU Domain Mapping 플러그인을 사용하는 경우에는 다음 두 테이블도 제거해야 합니다.

  • domain_mapping
  • domain_mapping_logins

하지만 워드프레스 멀티사이트 도메인 매핑 플러그인은 더 이상 사용할 필요가 없으므로 대부분의 사이트에서는 이 플러그인이 설치되어 있지 않을 것입니다.

이 작업은 phpMyAdmin 등의 MySQL 클라이언트 툴에 접속하여 수행할 수 있습니다.

멀티사이트 관련 플러그인 제거하기

이제 워드프레스 플러그인을 검토하여 멀티사이트에서만 작동하는 플러그인이 있다면 삭제하시기 바랍니다.

wp-content에서 불필요한 폴더 삭제하기

계속하여 wp-content 폴더를 확인하여 불필요한 디렉터리를 삭제하도록 합니다. 멀티사이트 내에 여러 개의 사이트가 있었다면 해당 사이트에 해당하는 폴더들이 있을 것입니다. 그런 폴더를 삭제하시기 바랍니다. 이를 통해 웹호스팅 디스크 용량을 절감할 수 있습니다.

네트워크 활성화된 플러그인을 재활성화하기

네트워크 레벨에서 활성화된 플러그인들은 멀티사이트가 제거되면 비활성화됩니다. 플러그인 » 설치한 플러그인으로 이동하여 현재 사이트에서 활성화해야 하는 플러그인이 비활성화되어 있으면 활성화하도록 합니다.

마치며

이상으로 멀티사이트를 비활성화하여 단일 사이트(싱글 사이트)로 변환하는 방법을 살펴보았습니다. 먼저는 확실히 백업을 한 후에 진행하시기 바랍니다.

위의 과정을 통해 멀티사이트 네트워크 내의 사이트들 중에서 메인 사이트를 제외한 나머지 사이트들을 삭제하고 메인 사이트를 싱글 사이트로 전환할 수 있습니다.

멀티사이트를 비활성화하는 데 어려움을 겪거나 기타 워드프레스 관련 문제가 있는 경우 여기에서 서비스(유료)를 요청하실 수 있습니다.

참고


댓글 남기기

* 이메일 주소는 공개되지 않습니다.