Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

ko:사이트 URL 변경 방법

워드프레스 사이트를 사용하시다보면, 사이트의 접속 URL을 변경해야할 필요가 있는 경우가 있습니다. 아래 내용은 그런 경우 사이트 URL을 변경하는 모든 과정을 담고 있습니다. 우선, 관리자 페이지(/wp-admin)에서 '설정'->'일반설정' 화면을 보면, 워드프레스 주소(URL)과 사이트 주소(URL)을 입력할 수 있는 2개의 입력칸이 있습니다. 이것들은 아시다시피 Home 그리고 Site URL 설정들입니다. 이것들은 워드프레스 URL과 관련한 중요한 부분입니다. 이 설정값에 따라 화면에 보여지는 컨텐츠와 사이트 내용, 그리고 관리자 영역, 그리고 각종 페이지, 사용자단(프론트엔드) 그리고 여러 워드프레스 코드에서 사용이 됩니다.

  • "Home" 설정은 브라우저에서 사용자들이 입력하여 접속하는 주소입니다.
  • "Site URL" 설정은 워드프레스 코어 파일이 있는 주소입니다.

알림 : 두 가지 설정 모두 http:// 를 포함하고 있어야 하며, 마지막 슬래시("/")는 포함하지 않습니다.

이 문서는 사용자분들 중에서 일부 수동으로 사이트 주소 일부 또는 전부를 변경하길 원하는 분들을 위한 것입니다. 여기에는 그런 방법들이 나열되어 있습니다. 그러나 사이트 주소를 옮기는 작업 이외에 사이트가 접속이 되지 않거나 에러가 난 경우에는 이 문서에서 제시하는 방법들을 사용하지 마시기 바랍니다. .

주의! 이 내용들은 워드프레스를 단독으로 설치한 경우에만 해당됩니다. 워드프레스 멀티 사이트를 사용하고 있는 경우에는 데이터베이스를 직접 수동으로 수정해 주어야 합니다.

사이트 URL 변경하기

여기에 4가지 쉬운 방법으로 사이트 URL를 변경하는 방법이 있습니다. 어떤 방법을 선택하던지 동일한 기능을 합니다.

wp-config.php 편집

수동으로 사이트 주소를 변경하는 방법이 있습니다. 이 방법은 wp-config.php 파일의 내용을 추가하는 방법으로 이루어 집니다.

워드프레스가 설치된 곳 최상위에서 wp-config.php 파일을 찾으신 뒤에 해당 파일에 아래와 같은 코드를 추가해 줍니다.

변경하려는 사이트의 주소가 http://example.com 인경우 아래와 같이 2줄을 추가하여 줍니다.

define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');

이 방법은 최선의 방법은 아닙니다. 다만, 사이트에 하드코딩을 하지 않아도 되면, 단지 wp-config.php 파일만의 수정으로 적용이 된다는 점에서 추천할 수 있는 방법입니다.

이 방법은 일반적인 셋팅 페이지나 포스트에만 적용되는 방법으로 테마나 특정 플러그인에서 사용되는 내용들의 경우에는 적용되지 않을 수 있습니다.

functions.php 편집

만약, FTP클라이언트로 사이트에 접근 할 수 있다면, 이 방법이 도움이 될것이다.

1. FTP로 사이트에 접속하여 현재 사용중인 테마의 functions.php 파일을 다운로드 또는 복사한다. 이후에 텍스트 에디터 프로그램(메모장 같은 것들)으로 수정한 뒤에 사이트에 업로드 한다.

2. functions.php에 아래 2줄의 내용을 추가한다. 추가할 때에는 반드시 "<?php"로 시작하는 줄 다음에 해당 내용을 추가해야 한다. 사이트 주소가 http://example.com 인 경우 아래와 같이 추가한다.

update_option('siteurl','http://example.com');
update_option('home','http://example.com');
내용이 적용되어 나타날 것입니다.

5. 위 방법을 이용하되, 반복해서 사용하면 안된다. 한번 사용한 뒤에 해당 줄의 내용을 제거하여 다시업로드 해야 한다. 계속 해당 라인을 삭제하지 않고 사용한다면 사이트 동작시마다 매번 해당 작업을 하기 때문에 사이트에 성능 문제가 발생할 수 있다. 가능하다면 작업이 완료된 이후에 제거하여 주십시오.

만약, 해당 테마에 functions.php 파일이 없는 경우:

새로 "functions.php" 텍스트 파일을 생성하여 아래의 내용을 입력하고 저장한 뒤에 사용중인 테마 폴더에 업로드 합니다. 사이트 주소는 http://example.com 인 경우입니다.

<?php
update_option('siteurl','http://example.com');
update_option('home','http://example.com');
?>

물론 이 경우에도, 작업을 한 뒤에 해당 파일을 삭제하거나 해당 라인을 삭제하여 다시 업로드 하여주셔야 합니다.

사이트 URL 재배치 방법

워드프레스가 지원하는 자동 재배치 방법을 사용하면 빠르게 사이트를 다른 서버로 이전할 수 있습니다.

코드 함수를 이용하는 방법

다음 챕터에 나오는 부분을 보면, wp-config.php 파일에 RELOCATE 부분을 true 로 정의한 경우 wp-login.php 에 있는 다음 코드를 따라 실행하도록 되어 있습니다. if ( defined( 'RELOCATE' ) && RELOCATE ) { // Move flag is set if ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) ) $_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], , $_SERVER['PHP_SELF'] );

$url = dirname( set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ) ); if ( $url != get_option( 'siteurl' ) ) update_option( 'siteurl', $url ); }

코드 함수를 이용하는 과정

1. wp-config.php파일을 에디터로 열어 편집합니다.

2. "define" 으로 지정되어 있는 부분들 다음에 새로운 줄을 추가하며, 다음 코드를 입력합니다 : define('RELOCATE',true);

3. wp-config.php 파일을 저장합니다.(또는 저장하여 FTP에 업로드합니다)

4. 웹 브라우저를 여시고, 새로운 서버위의 wp-login.php 에 wp-config.php 파일을 수동적으로 위치시키세요. 예를 들면, 새 사이트가 http://www.yourdomainname.com 에 위치해 있을때, 브라우저 바에 http://www.yourdomainname.com/wp-login.php를 입력하세요.

5. 일반적으로 로그인을 합니다.

6. 사이트가 당신이 소유했다는 것을 증명하기 위해서, 웹브라우저의 주소바를 살펴보세요. 실제로, 정확한 서버에 로그인이 되었는지 확인해야합니다. 이 경우라면, 관리자 화면에서 Settings (설정) > General(일반) 을 살펴보세요 그리고 주소와 셋팅들이 정확한 것인지 대해서 확실하게 해줘야합니다. Save Changes (변경사항 저장하기) 를 잊지마세요.

7. 한번 이렇게 수정됬을 때, wp-config.php 를 수정하세요 그리고 추가한 라인, (// 와 함께) 주석을 달았던 라인을 완전하게 지우거나 (전체 라인을 삭제하세요), 만약 또다시 주소를 변경할 것이라고 생각된다면 , true 값을 false로 변경하세요.

알림: RELOCATE 플래그를 true 로 설정했을때, Site URL 은 로그인 스크린을 접근하기 위해서 사용하는 path라면 무엇이든지 자동적으로 업데이트 시켜버릴 것입니다. 이것은 아마도 admin 부분을 위로 불러오고 새로운 URL 위에서 작동하는 것을 불러올 것입니다. 그러나 또다른 설정 부분이 부정확하다면 이것은 작동되지 않을 것입니다. 이럴경우에는 수동적으로 수정해야만 할 것입니다.

데이터베이스에서 URL을 직접 변경하는 방법

만약 당신이 phpMyAdmin에 접근할 수 있다면, 아래 방법을 통해서 사이트 URL을 직접 수정하여 바로 사용할 수 있습니다.


  1. 데이터베이스 백업하기 후에 복사본을 따로 저장하세요.
  2. phpMyAdmin 에 로그인합니다.
  3. Databases 링크를 클릭하세요.
  4. 데이터베이스 리스트가 나타날 겁니다. 당신의 워드프레스 데이터베이스를 선택하세요.
  5. 데이터베이스 안의 모든 테이블이 스크린상에 나타날 겁니다..
  6. 리스트에서, wp_options 를 찾아보세요.. 알림: 테이블의 접두사 wp_ 는 설치할 때 변경했다면 다를 수 있습니다.
  7. Browse(찾아보기) 로 표시되어진 작은 아이콘을 찾아보세요..
  8. wp_options 테이블 안에서 필드들의 리스트와 함께 화면이 열릴 것 입니다.
  9. option_name 필드 아래에서, 스크롤 을 내리고 siteurl 를 찾으세요.
  10. 보통 행의 시작지점에서 멀리 떨어진 곳에 위치한 곳에서 찾아지는 Edit Field 아이콘을 클릭하세요.
  11. Edit Field 창이 나타납니다.
  12. option_value 입력 상자 안에서, 조심스럽게 URL 정보를 새로운 주소로 변경시킵니다.
  13. 이 설정이 정확한지 확인하세요 그리고 정보를 저장하기 위해서 Go 를 클릭하세요.
  14. wp_options 테이블로부터 반드시 돌아와져야만 합니다.
  15. 테이블 안에서 home 를 찾아보세요 그리고 Edit Field를 클릭하세요.. 알림 wp_options 안쪽에는 몇몇개의 테이블들의 페이지가 존재합니다. 그들을 통하여 페이지에 대해서 >를 찾으세요.
  16. option_value 에 대한 입력상자 안에서, 조심스럽게 새로운 주소에 대하여 URL 정보를 변경하십시오.
  17. 정확하게 이루어졌는지 확인하시고 정보를 저장하기 위해서 Go를 클릭하세요.

Moving Sites

When moving sites from one location to another, it is sometimes necessary to manually modify data in the database to make the new site URL information to be recognized properly. Many tools exist to assist with this, and those should generally be used instead of manual modifications.

This is presented here as information only. This data may not be complete or accurate.

You should read the Moving WordPress article first, if attempting to move WordPress from one system to another.

Altering Table Prefixes

Like many WordPress administrators, you may be running several WordPress installations off of one database using various wp-config.php hacks. Many of these hacks involve dynamically setting table prefixes, and if you do end up altering your table prefix, you must update several entries within the prefix_usermeta table as well.

As in the above section, remember that SQL changes are permanent and so you should back up your database first:

If you are changing table prefixes for a site, then remember to alter the table prefix in the usermeta tables as well. This will allow the new site to properly recognize user permissions from the old site.

UPDATE `newprefix_usermeta` SET `meta_key` = REPLACE( `meta_key` , 'oldprefix_', 'newprefix_' );

템플릿 파일 변경하기

만약 테마를 사용하고 있다면, 각각의 템플릿 파일을 검색하여 수동으로 직접 예전 도메인 주소를 새로운 도메인 주소로 수정해야 할 수 있습니다. 이 과정은 경우에 따라서는 대단히 오래 걸릴 수 있으며, 테마에서 지원하지 않을 경우 성공하지 못할 수 도 있습니다. (테마를 수정하기에 어려움이 있는 분들은 시도하지 마시기 바랍니다) 템플릿 파일은 다음과 같은 파일들이 있으며, 수정이 필요할 수 있습니다 : sidebar.php and footer.php

워드프레스는 템플릿 코드를 통해서 사이트 주소를 입력하여 사용할 수 있습니다. 관리자 페이지 > 설정 > 일반 페이지에서 입력한 사이트 주소를 사용합니다. 만약 해당 코드를 사용하는 테마라면 모든 파일을 수정할 필요가 없습니다.

Changing the Config file

You will need to update your WordPress configuration file if your database has moved or changed in certain ways.

  1. You will only need to modify the config file if:
    1. your database has moved to another server and is not running on your localhost
    2. you have renamed your database
    3. you have changed the database user name
  2. "'Make a backup copy of your wp-config.php file.'"
  3. Open the wp-config.php file in a text editor.
  4. Review its contents. In particular, you are looking for the database host entry.
  5. Save the file.

At this point, your WordPress blog should be working.

Verify the Profile

  1. In your Administration Panels go to Settings > General . Here you will verify that the changes you made in Changing the URL above, are correct.
  2. Verify that the reference in your WordPress Address (URL) contains the new address.
  3. Verify that the reference in your Site Address (URL) contains the new address.
  4. If you have made changes, click Save Changes.

Changing the .htaccess file

After changing the information in your Administration > Settings > General panel, you will need to update your .htaccess file if you are using Permalinks or any rewrites or redirects.

  1. Make a backup copy of your .htaccess file. This is not a recommendation but a requirement.
  2. Open the .htaccess file in a text editor.
  3. Review its contents, looking for any custom rewrites or redirects you entered. Copy these to another text file for safe keeping.
  4. Close the file.
  5. Follow the instructions on the Permalinks SubPanel for updating your Permalinks to the .htaccess file.
  6. Open the new .htaccess file and check to see if your custom rewrites and redirects are still there. If not, copy them from the saved file and paste them into the new .htaccess file.
  7. Make any changes necessary in those custom rewrites and redirects to reflect the new site address.
  8. Save the file.
  9. Test those redirects to ensure they are working.

If you make a mistake, you can Restoring Your Database From Backup from your backup and try this again. So make sure it is right the first time.

Additional items of note

There are other things you may wish to change in order to correct URLs when moving sites.

  1. Images link: image links are stored in "post_content" in the wp_posts table. You can use the similar code above to update image links.
  2. wp_options: Besides the "siteurl" and "home" items mentioned above, there are other option_value which also need revision, such as "upload path", and some plugin items (depends on what you've installed, such as widgets, stats, DMSGuestbook, sitemap, etc.)
  3. To fix widgets that contain outdated URL's, you may edit them in Dashboard / Appearance / Widgets.
  4. Do a FULL database search for any items left. MAKE SURE you know what you are changing. and go through each item for possible improper replacement.
  5. If you a running a network / have multiple sites, you will need to replace instances of the URL in the database. They are stored in many tables, including each one of the sites (blogs). Be careful in what you replace and be sure you know the meaning of the field before changing it. See the Important GUID note below for an example of what not to change.
  6. Note, if you find your old url in the database options table under 'dashboard_incoming_links', you can ignore or delete that option. It's unused since WP 3.8.

How To: Move Your WordPress Blog to a New Domain - Using the Export/Import feature to move a blog to a new domain

Important GUID Note

When doing the above and changing the URLs directly in the database, you will come across instances of the URL being located in the "guid" column in the wp_posts tables.

It is critical that you do NOT change the contents of this field.

The term "GUID" stands for "Globally Unique Identifier". It is a field that is intended to hold an identifier for the post which a) is unique across the whole of space and time and b) never, ever changes. The GUID field is primarily used to create the WordPress feeds.

When a feed-reader is reading feeds, it uses the contents of the GUID field to know whether or not it has displayed a particular item before. It does this in one of various ways, but the most common method is simply to store a list of GUID's that it has already displayed and "marked as read" or similar.

Thus, changing the GUID will mean that many feedreaders will suddenly display your content in the user's reader again as if it was new content, possibly annoying your users.

In order for the GUID field to be "globally" unique, it is an accepted convention that the URL or some representation of the URL is used. Thus, if you own example.com, then you're the only one using example.com and thus it's unique to you and your site. This is why WordPress uses the permalink, or some form thereof, for the GUID.

However, the second part of that is that the GUID must never change. Even if you shift domains around, the post is still the same post, even in a new location. Feed readers being shifted to your new feeds when you change URLs should still know that they've read some of your posts before, and thus the GUID must remain unchanged.

Never, ever, change the contents of the GUID column, under any circumstances.

One exception is attachment media: Attachment media locations are stored as a URL in the GUID. If the default uploads folder needs to be changed to a different location, then the media URL will need to be changed in the post_content and guid columns of the posts table. For example, if the default uploads folder is changing from wp-content/uploads to images:

UPDATE wp_posts SET post_content = REPLACE(post_content,'www.domain.com/wp-content/uploads','www.domain.com/images');
UPDATE wp_posts SET guid = REPLACE(guid,'www.domain.com/wp-content/uploads','www.domain.com/images');

멀티사이트 관련 내용

Moving WordPress Multisite 내용을 참고하세요.

wp-cli 를 사용

wp-cli 는 쉘툴로 서버 관리자가 쉘에서 사용가능한 경우 유용한 방법입니다. 해당 쉘 툴을 설치하신 뒤에 아래 명령을 입력해서 사용하시면 됩니다.

wp search-replace 'http://example.dev' 'http://example.com'

로 하거나, 혹은 옵션만 변경하고 싶다면 아래와 같이 하면 됩니다.

wp option update home 'http://example.com'
wp option update siteurl 'http://example.com'