일반 적인 단일 사이트로 설치된 경우 관리자 패널의 다음 메뉴에서 변경이 가능합니다.
관리자 패널 > 설정 > 일반 > 워드프레스 주소(url), 사이트주소(url)
하지만 서버내 생성된 캐시파일이나 DB에 입력되어있는 이미지 url은 기존 도메인의 정보를 그대로 가지고 있는 경우가 있으며 위의 설정만 변경하는경우 CORS ( Cross-Origin Resource Sharing ) 정책에 의해 사이트가 정상 동작 하지 않는 문제가 발생 할 수 있습니다. 또한 변경 전 도메인의 연결이 사라진 경우 미디어 파일을 정상적으로 불러오지 못하는 등의 문제도 발생합니다.
일반적으로 캐시파일 ( 캐시플러그인이나 플러그인에서 생성한 서버내 php, html 파일 ), 그리고 DB내 post url 정보 등이 기존 주소로 남아 있어 브라우저 접근시 위와 같은 에러를 발생 시킵니다. 캐시파일은 재생성으로 쉽게 해결할 수 있으나 DB의 경우 별도의 작업이 필요할 수 있습니다.
워드프레스에 설정된 도메인을 변경 하는 경우 위와 같은 에러가 발생하지 않도록 추가적인 작업이 필요할 수 있으며 자세한 방법을 안내합니다.
관리자 패널 > 설정 > 일반 > 워드프레스 주소(url), 사이트주소(url)
하지만 서버내 생성된 캐시파일이나 DB에 입력되어있는 이미지 url은 기존 도메인의 정보를 그대로 가지고 있는 경우가 있으며 위의 설정만 변경하는경우 CORS ( Cross-Origin Resource Sharing ) 정책에 의해 사이트가 정상 동작 하지 않는 문제가 발생 할 수 있습니다. 또한 변경 전 도메인의 연결이 사라진 경우 미디어 파일을 정상적으로 불러오지 못하는 등의 문제도 발생합니다.
일반적으로 캐시파일 ( 캐시플러그인이나 플러그인에서 생성한 서버내 php, html 파일 ), 그리고 DB내 post url 정보 등이 기존 주소로 남아 있어 브라우저 접근시 위와 같은 에러를 발생 시킵니다. 캐시파일은 재생성으로 쉽게 해결할 수 있으나 DB의 경우 별도의 작업이 필요할 수 있습니다.
워드프레스에 설정된 도메인을 변경 하는 경우 위와 같은 에러가 발생하지 않도록 추가적인 작업이 필요할 수 있으며 자세한 방법을 안내합니다.
미디어 url 변경 방법 (플러그인 활용)
도메인의 url 정보가 포함된 테이블을 플러그인을 통해 변경 할 수 있습니다. 워드프레스 주소(url), 사이트주소(url) 정보를 새로운 도메인으로 변경후 관리자 패널로 접근, 플러그인 설치 후 간단히 새로운 도메인으로 url 정보를 업데이트 합니다.
대표 적으로 go-live-update-urls 플러그인 ( https://wordpress.org/plugins/go-live-update-urls/ ) 이 있습니다.
대표 적으로 go-live-update-urls 플러그인 ( https://wordpress.org/plugins/go-live-update-urls/ ) 이 있습니다.
- 관리자 패널 > 플러그인 > 새로 추가 > go to live urls 검색 후 지금설치 > 활성화
- 관리자 패널 > 도구 > go live > 업데이트할 테이블 선택
% 예외 상황이 있을순 있으나 기본적으로 체킹된 테이블을 모두 업데이트 합니다.
미디어 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');
쿼리는 테이블 내 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. Commands end with ; or \g. Your MariaDB connection id is 435788 Server version: 10.1.13-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [techcswp]>
- update query로 기존 도메인의 url 정보를 새로운 도메인으로 변경
MariaDB [techcswp]> select post_content from wp_posts where ID=7\G
*************************** 1. row ***************************
post_content: <!-- wp:image {"id":6,"width":650,"height":365,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large is-resized"><img src="htp[:]//test.mycafe24.com/wp-content/uploads/2022/04/test-1024x576.png" alt="" class="wp-image-6" width="650" height="365"/><figcaption>test</figcaption></figure>
<!-- /wp:image -->
1 row in set (0.00 sec)
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)
Rows matched: 8 Changed: 4 Warnings: 0
MariaDB [techcswp]> select post_content from wp_posts where ID=7\G
*************************** 1. row ***************************
post_content: <!-- wp:image {"id":6,"width":650,"height":365,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large is-resized"><img src="htp[:]//USERID.mycafe24.com/wp-content/uploads/2022/04/test-1024x576.png" alt="" class="wp-image-6" width="650" height="365"/><figcaption>test</figcaption></figure>
1 row in set (0.00 sec)
DATA내 캐시파일 정리 필요 :
DB update가 완료되면 파일내 기존 url 정보가 남아있는지 확인 합니다. 대부분의 경우 캐시플러그인 ( wp-super-cache 등의 )의 캐시파일이 해당 됩니다.관리자 패널에서 캐시 재생성을 하거나 삭제를 통해 새로운 url로 캐시파일을 새로 생성하도록 합니다. 이후 브라우저 개발자 도구를 통해 기존 url정보를 호출하는 것이 있는지 확인 합니다.
DB update가 완료되면 파일내 기존 url 정보가 남아있는지 확인 합니다. 대부분의 경우 캐시플러그인 ( wp-super-cache 등의 )의 캐시파일이 해당 됩니다.관리자 패널에서 캐시 재생성을 하거나 삭제를 통해 새로운 url로 캐시파일을 새로 생성하도록 합니다. 이후 브라우저 개발자 도구를 통해 기존 url정보를 호출하는 것이 있는지 확인 합니다.
잘못된 url을 입력하여 관리자 접근이 불가능해진 상황에 FTP나 SSH를 통해서 변경 하는 방법도 안내합니다. 잘못된 도메인 주소를 입력하고 저장 하는 경우 기본 페이지나 관리자 페이지에 더이상 접근하지 못하는 경우가 많습니다.
https 프로토콜로 잘못 입력하여 아예 접근을 못하는 경우가 대표적이며, 브라우저가 아닌 SSH, FTP를 통해 복구하거나 직접 DB로 접근하여 복구하는 방법이 있습니다.
https 프로토콜로 잘못 입력하여 아예 접근을 못하는 경우가 대표적이며, 브라우저가 아닌 SSH, FTP를 통해 복구하거나 직접 DB로 접근하여 복구하는 방법이 있습니다.
wp-config.php 파일을 통한 복구 방법
- FTP/SSH를 통해 서버 접속 ( 본문에서는 SSH를 통한 방법으로 안내 )
- 편집기로 wp-config.php 파일에 아래 항목을 추가
## 변경할 도메인이 USERID.mycafe24.com 인경우
define( 'WP_HOME', 'http://USERID.mycafe24.com' );
define( 'WP_SITEURL', 'http://USERID.mycafe24.com' ); - 관리자 접근후 변경된 설정값 확인. ( 영구적으로 변경되므로 접근 성공후 제거할지 선택 )
functions.php 파일을 통한 복구 방법
- FTP/SSH를 통해 서버 접속
- 현재 사용중인 테마 폴더의 functions.php 파일에 아래 항목을 추가
## DB에서 현재 사용중인 테마 확인 가능
MariaDB [USERID]> select option_value from wp_options where option_name='template';
+--------------+
| option_value |
+--------------+
| astra |
+--------------+
1 row in set (0.00 sec)
## 테마 경로로 이동
cd ~USERID/www/wp-content/themes/astra
## functions.php 파일에 아래 항목을 추가후 저장 ( 파일이 없는경우 생성 )
## 변경할 도메인이 USERID.mycafe24.com 인 경우
update_option( 'siteurl', 'http://USERID.mycafe24.com' );
update_option( 'home', 'http://USERID.mycafe24.com' ); - 브라우저에서 변경 된 url의 관리자 페이지 접근 시도 ex) http://USERID.mycafe24.com/wp-admin
- 정상 접근 된 것을 확인후 functions.php에 추가된 설정 제거
제거 하지 않는경우 사이트 접근시마다 설정한 도메인으로 업데이트를 시도하니 제거 바랍니다.
update_option hook 기술문서 참조
DB에서 직접 복구하는 방법
- MYSQL(MARIADB) PROMPT로 접근 합니다. ( 또는 heidsql 등의 GUI 툴로 작업 하셔도 됩니다. )
# ssh 터미널상에서 mysql prompt로 접근
$ mysql -u USERID -p DBNAME 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. Commands end with ; or \g. Your MariaDB connection id is 9166791 Server version: 10.1.13-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [USERID] - wp_options 테이블의 siteurl, home 값을 변경할 도메인으로 update 합니다.
## USERID.mycafe24.com 에서 newdomain.com 으로 변경 하는경우
MariaDB [USERID]> select * from wp_options where option_id<3; +-----------+-------------+-------------------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+-------------------------------+----------+ | 1 | siteurl | http://USERID.mycafe24.com/ | yes | | 2 | home | http://USERID.mycafe24.com/ | yes | +-----------+-------------+-------------------------------+----------+ 2 rows in set (0.05 sec) MariaDB [USERID]> update wp_options set option_value='http://newdomain.com' where option_id<3 limit 2; Query OK, 2 rows affected (0.45 sec) Rows matched: 2 Changed: 2 Warnings: 0 MariaDB [USERID]> select * from wp_options where option_id<3; +-----------+-------------+----------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+----------------------+----------+ | 1 | siteurl | http://newdomain.com | yes | | 2 | home | http://newdomain.com | yes | +-----------+-------------+----------------------+----------+ 2 rows in set (0.00 sec)