대표 도메인을 변경/복구 하고 싶습니다
일반적인 단일 사이트로 설치된 경우 관리자 패널의 다음 메뉴에서 변경이 가능합니다.
관리자 패널 > 설정 > 일반 > 워드프레스 주소(url), 사이트주소(url)하지만 서버내 생성된 캐시파일이나 DB에 입력되어있는 이미지 url은 기존 도메인의 정보를 그대로 가지고 있는 경우가 있으며 위의 설정만 변경하는경우 CORS 정책에 의해 사이트가 정상 동작 하지 않는 문제가 발생 할 수 있습니다. 또한 변경 전 도메인의 연결이 사라진 경우 미디어 파일을 정상적으로 불러오지 못하는 등의 문제도 발생합니다.
일반적으로 캐시파일(캐시플러그인이나 플러그인에서 생성한 서버내 php, html 파일), 그리고 DB내 post url 정보 등이 기존 주소로 남아 있어 브라우저 접근시 위와 같은 에러를 발생 시킵니다. 캐시파일은 재생성으로 쉽게 해결할 수 있으나 DB의 경우 별도의 작업이 필요할 수 있습니다.
워드프레스에 설정된 도메인을 변경 하는 경우 위와 같은 에러가 발생하지 않도록 추가적인 작업이 필요할 수 있으며 자세한 방법을 안내합니다.
1. 미디어 url 변경 방법(플러그인 활용)
도메인의 url 정보가 포함된 테이블을 플러그인을 통해 변경 할 수 있습니다. 워드프레스 주소(url), 사이트주소(url) 정보를 새로운 도메인으로 변경후 관리자 패널로 접근, 플러그인 설치 후 간단히 새로운 도메인으로 url 정보를 업데이트 합니다.
대표적으로 go-live-update-urls 플러그인(https://wordpress.org/plugins/go-live-update-urls/)이 있습니다.
- 관리자 패널 > 플러그인 > 새로 추가 > go to live urls 검색 후 지금설치 > 활성화
- 관리자 패널 > 도구 > go live > 업데이트할 테이블 선택
- 예외 상황이 있을 수 있으나 기본적으로 체킹된 테이블을 모두 업데이트 합니다.
2. 미디어 url 변경 방법(DB에서 직접 수정)
워드프레스는 브라우저에 노출되는 대부분의 정보를 wp_posts 테이블에서 담당합니다. 작성하는 페이지나 글이 모두 해당되며, wp_posts 테이블 내 입력된 url 정보를 REPLACE 처리하여 새로운 도메인으로 호출되도록 수정 합니다. metadata가 입력된 경우 같이 업데이트가 필요할 수 있습니다.
쿼리는 테이블 내 oldurl.com의 주소를 newurl.com으로 모두 치환(REPLACE) 처리합니다.
wp_posts UPDATE query
UPDATE wp_posts SET post_content = REPLACE(post_content, 'oldurl.com', 'newurl.com');wp_postmeta, wp_options UPDATE query
UPDATE wp_options SET option_value = REPLACE(option_value, 'oldurl.com', 'newurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';UPDATE wp_posts SET guid = REPLACE(guid, 'oldurl.com','newurl.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value,'oldurl.com','newurl.com');
① mysql prompt 접근
# mysql -u techcswp -p techcswp
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor.
MariaDB [techcswp]>
② UPDATE query로 기존 도메인의 url 정보를 새로운 도메인으로 변경
MariaDB [techcswp]> SELECT post_content FROM wp_posts WHERE ID=7\G
*************************** 1. row ***************************
post_content: <img src="http://test.mycafe24.com/..." />
MariaDB [techcswp]> UPDATE wp_posts SET post_content = REPLACE(post_content,'test.mycafe24.com','USERID.mycafe24.com');
Query OK, 4 rows affected (0.00 sec)
MariaDB [techcswp]> SELECT post_content FROM wp_posts WHERE ID=7\G
DB UPDATE가 완료되면 파일내 기존 url 정보가 남아있는지 확인 합니다. 대부분의 경우 캐시플러그인(wp-super-cache 등)의 캐시파일이 해당 됩니다.
관리자 패널에서 캐시 재생성을 하거나 삭제를 통해 새로운 url로 캐시파일을 새로 생성하도록 합니다. 이후 브라우저 개발자 도구를 통해 기존 url정보를 호출하는 것이 있는지 확인 합니다.잘못된 url을 입력하여 관리자 접근이 불가능해진 상황에 FTP나 SSH를 통해서 변경 하는 방법도 안내합니다.
https 프로토콜로 잘못 입력하여 아예 접근을 못하는 경우가 대표적이며, 브라우저가 아닌 SSH, FTP를 통해 복구하거나 직접 DB로 접근하 여 복구하는 방법이 있습니다.
3. wp-config.php 파일을 통한 복구 방법
- FTP/SSH를 통해 서버 접속
- 편집기로 wp-config.php 파일에 아래 항목을 추가
## 변경할 도메인이 USERID.mycafe24.com 인경우
define( 'WP_HOME', 'http://USERID.mycafe24.com' );
define( 'WP_SITEURL', 'http://USERID.mycafe24.com' );
- 관리자 접근후 변경된 설정값 확인
4. functions.php 파일을 통한 복구 방법
-
FTP/SSH를 통해 서버 접속
-
사용중인 테마 폴더의 functions.php 파일에 아래 항목 추가
## SELECT option_value FROM wp_options WHERE option_name='template';
update_option( 'siteurl', 'http://USERID.mycafe24.com' );
update_option( 'home', 'http://USERID.mycafe24.com' );
- 확인후 추가된 설정 제거(제거 권장)
5. DB에서 직접 복구하는 방법
- MYSQL PROMPT 접근
$ mysql -u USERID -p DBNAME
- wp_options 테이블의 siteurl, home 값을 변경할 도메인으로 UPDATE 합니다.
MariaDB [USERID]> SELECT * FROM wp_options WHERE option_id<3;
MariaDB [USERID]> UPDATE wp_options SET option_value='http://newdomain.com' WHERE option_id<3 LIMIT 2;