일반적으로 사이트 이전 같은 이유로 주소를 변경하고자 할 때 주소가 변경되기 전에는 워드프레스 관리자 화면의 일반 설정에서 주소를 바꿀 수가 있다. 그렇지만, 실수로 또는 어떤 이유로 인해 사전에 새 주소로 바꿔놓지 않으면 해당 웹사이트 뿐만아니라 워드프레스 관리자 화면도 접근을 못 하는 경우가 발생한다. 저 같은 경우는 집에서 와이파이 공유기에 라즈베리파이를 연결하여 워드프레스를 연습삼아 설치하여 사용했었는데 와이파이의 전원이 껐다 켜지자 접속을 할 수가 없었다. 집 공유기의 퍼블릭 IP가 변경되어 워드프레스 설정에서 입력한 URL과 다르게 된 것이다. 그리고 또 다른 최근의 경우는 IP주소로 구성된 주소를 쓰다가 ipTIME의 DDNS을 사용하여 바꾸게 된 경우이다.
URL은 데이터베이스의 많은 테이블에 저장되어 있다. 이 모든 것들을 찾아서 바꿔줘야 한다. 이런 경우 몇 가지 해결방법을 정리해 보았다. 어떤 방법을 사용하든 상관은 없다. 저는 아래 세 번째 DB에서 직접 수정했다. 첫번째와 두번째 방법은 사이트의 접근만 가능하게 하는 임시적인 조치이다. 워드프레스 어드민 계정으로 우선 접근을 가능하게 한 후에 추가적인 작업이 필요하다. 아래는 바꿔야할 내용들이다.
- 블로그 및 페이지: “wp_posts” 테이블의 “posts_content” 필드
- 링크 매니저: ‘wp_links” 테이블의 “link_url”와 “link_image” 필드
- 사용자 메뉴 URL: “wp_postmeta” 테이블의 “meta_value” 필드
- 옵션이나 테마, 플러그인: “wp_options” 테이블의 “option_value” 필드
- 코맨트내 URL: “wp_comments” 테이블의 “comment_content” 필드
1. wp-config.php 파일 수정
wp-config.php
파일에서 Site URL과 Home URL을 직접 추가한다. 파일을 에디터로 연후에 아래 두 문장을 추가한다. example.com
은 변경하고자 하는 새 주소이름이다.
$ nano /var/www/html/wp-config.php
define( 'WP_HOME', 'http://example.com' );
define( 'WP_SITEURL', 'http://example.com' );
이 방법이 쉽기는한데 워드프레스 설정에서는 바꿀 수 없게 된다. 그렇지만 워드프레스 관리자가 실수로 바꿔서 문제가 생길 수 있는 여지를 원천적으로 없앨 수는 있게 된다.
2. functions.php 파일 수정
두번째 방법은 functions.php
파일을 수정하는 방법이다. 파일의 위치는 /var/www/html/wp-content/themes/'나의테마이름'
밑에 있다. 첫 “<?php
” 바로 다음에 다음 두 줄을 넣어준다.
$ nano /var/www/html/wp-content/themes/generatepress/functions.php
update_option( 'siteurl', 'http://example.com' );
update_option( 'home', 'http://example.com' );
사이트가 복구되면 반드시 이 두 줄을 삭제해줘야 한다. 만약 functions.php
파일이 없다면 직접 파일을 만들어서 theme 디렉토리 밑에 둔다. 역시 사이트가 잘 돌아가면 삭제해준다.
<?php
update_option( 'siteurl', 'http://example.com' );
update_option( 'home', 'http://example.com' );
3. DB에서 URL 직접 수정
phpMyAdmin을 이용
DB에서 ‘siteurl’과 ‘home’의 값을 직접 업데이트해주는 방법이다. DB에서 값을 바꾸기 위해서는 phpMyAdmin을 이용하거나 아니면 코맨드 라인에서 직접 업데이트해 주는 방법이 있다. 두 가지 방법 중 역시 편한 방법을 사용하면 된다. 각각에 대해서 간략히 정리해 본다. DB를 직접 수정하기 전에 반드시 백업을 받은 후에 작업하자.
웹 브라우저를 이용하여 phpMyAdmin에 접속한다. 호스팅 서비스를 이용한다면 업체에서 제공하는 관리 툴을 사용하고 직접 사이트를 운영한다면 phpMyAdmin을 서버에 설치하여야 한다. 설치 방법은 간단하다. sudo apt-get install phpmyadmin
를 실행하고 몇가지 질문에 답하면 된다. 좀 더 자세한 내용은 라즈베리파이에서 phpMyAdmin 설치하기 글을 참조 바란다. 접속 후에 ‘wordpress
’ database에서 wp_options
를 선택 후, 아래 두 테이블 ‘siteurl
’ 과 ‘home
’의 ‘option_value
‘값을 새로운 주소로 변경한다. Edit 아이콘을 누르면 값을 변경할 수 있는 창이 뜬다.
MySQL 커맨드 라인 이용
phpMyAdmin
툴이 설치되어 있지 않거나 SQL문에 익숙하다면 MySQL 커맨드 라인에서 직접 바꿀 수있다. 커맨드 라인에 익숙한 사람은 이 방법이 가장 간편할 수가 있겠다.
$ mysql -u root -p
SHOW DATABASES;
USE wordpress; # DB Name
SHOW TABLES; # wp_options 테이블이 있는지 확인함
SELECT option_name FROM wp_options;
wp_options
에 있는 많은 컬럼(option_name)들이 출력된다. 여기서는 option_name
이 ‘home
‘과 ‘siteurl
‘만 있는지 확인하고 현재 값을 확인해 본다. 그런 후에 새로운 주소로 변경해주면 된다. 아래를 실행한다. 이때 new_host_name
는 변경하고자 하는 새 주소이다.
SELECT * FROM wp_options WHERE option_name = 'home';
UPDATE wp_options SET option_value="http://new_host_name" WHERE option_name = "home";
이번엔 ‘siteurl
‘ 값을 변경한다.
SELECT * FROM wp_options WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value="http://new_host_name" WHERE option_name = "siteurl";
이렇게 하면 다시 바뀐 주소에서 웹이 다시 보일 것이다. 그렇지만 이미지나 비디오등 링크가 깨져서 보일 수도 있다. 다음을 추가로 수행한다. ‘http://192.168.35.29’ 은 옛 주소이고 바꿔줘야할 새 주소는 ‘https://happyvictor.iptime.org’이다.
UPDATE wp_posts SET guid = replace(guid, 'http://192.168.35.29', 'https://happyvictor.iptime.org');
UPDATE wp_posts SET post_content = replace(post_content, 'http://192.168.35.29', 'https://happyvictor.iptime.org');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://192.168.35.29', 'https://happyvictor.iptime.org');
UPDATE wp_links SET link_url = replace(link_url, 'http://192.168.35.29', 'https://happyvictor.iptime.org');
UPDATE wp_links SET link_image = replace(link_image, 'http://192.168.35.29', 'https://happyvictor.iptime.org');
UPDATE wp_comments SET comment_content = replace(comment_content, 'http://192.168.35.29', 'https://happyvictor.iptime.org');
4. 워드프레스 플러그인 사용
DB를 직접 다루는 것에 자신이 없다면 워드프레스 플러그인을 사용하는 방법이 있다. 위 어떤 방법을 사용하여 우선은 워드프레스 어드민 계정으로 로그인할 수 있게 하여야 한다. Search and Replace, Better Search Replace 등이 있다.