programing

워드프레스:서버에서 로컬 호스트로 다중 사이트 이동

kakaobank 2023. 3. 18. 08:47
반응형

워드프레스:서버에서 로컬 호스트로 다중 사이트 이동

배포된 WordPress Multi-Site를 로컬 환경으로 이동하려고 합니다.서버 데이터베이스와 파일을 백업했습니다.로컬 환경에서 새 데이터베이스를 만들고 백업을 가져왔습니다.서버 파일도 로컬 머신에 복사했습니다.

다음 단계를 수행했습니다.

  1. wp-config를 변경했습니다.php를 사용하여 업데이트했습니다.db-name,db-username,db-password를 설정합니다.define('DOMAIN_CURRENT_SITE', 'www.mysitename.com');로로 합니다.define('DOMAIN_CURRENT_SITE', 'localhost/mysitename');.

  2. option_value로컬 주소를 가리키도록 wp-option 데이터베이스 테이블에서 지정합니다.

  3. .htaccess에서 다음 행도 삭제했습니다.

    # Redirect non-www urls to www
    RewriteCond %{HTTP_HOST} !^www\.mysitename\.com
    RewriteRule (.*) http://www.mysitename.com/$1 [R=301,L]
    

그러나 127.0.0.1/mysitename으로 이동하면 다음 오류가 나타납니다.페이지에는 리다이렉트 루프가 있습니다.

내가 때define('DOMAIN_CURRENT_SITE', 'localhost/mysitename');로로 합니다.define('DOMAIN_CURRENT_SITE', 'localhost');127.0.0.1/mysitname address로 이동하면 phpinfo() 페이지가 나타납니다.

어떻게 하면 문제를 해결할 수 있을까요?

.htaccess 파일과 wp-config.php 파일로 설정해야 하는지 설명해 주세요.

정말 감사합니다.

편집: 최근 다시 여러 사이트를 마이그레이션해야 했습니다. 이 가이드는 2016년 1월 3일 현재도 정상적으로 작동합니다.데이터베이스 편집은 매우 복잡하며, 한 번의 실수로 인해 사망 또는 데이터베이스 연결 오류가 화이트 스크린에 표시되므로 주의하시기 바랍니다.

프로토콜(http://)을 사용하는 localhost 링크를 허용하는 방법을 찾을 수 없었기 때문에 "(http:)localhost"가 표시되면 http:// localhost/로 읽습니다.누군가 이것을 편집해 주었으면 좋겠어!

일반 Wordpress 마이그레이션:

  1. localhost에서 데이터베이스를 백업합니다.
  2. 새 서버에 새 데이터베이스를 작성하고 내보낸 데이터베이스를 여기로 가져옵니다.
  3. 모든 Wordpress 파일을 서버에 업로드합니다.
  4. wp-config.php를 편집하고 데이터베이스 이름, 사용자 이름 및 비밀번호를 변경합니다.보통 "define(')'WP_DEBUG'.."WP_HOME" 및 "WP_SITEURL"을 정의하면 루트 경로에 대한 Wordpress 데이터베이스 설정을 덮어씁니다."DOMAIN_CURRENT_SITE"는 다중 사이트 설치에 사용됩니다.따라서 멀티사이트가 아닌 경우에는 사용하지 말고 멀티사이트인 경우에는 WP_HOME 및 WP_SITEURL이 아닌 이것만 사용하십시오.

    define('WP_HOME', 'http://mysitename.com');
    define('WP_SITEURL', 'http://mysitename.com');
    
  5. localhost에서도 .htaccess를 업로드한 경우 서버에서 삭제합니다.

  6. http://mysitename.com/wp-admin, 로그인 후 permalinks 설정으로 이동하여 저장을 눌러 새 .htaccess를 생성합니다.

그리고 넌 끝났어!데이터베이스를 변경할 필요가 없습니다.localhost 설치의 경우 WP_HOME 및 WP_SITEURL을 localhost로 정의하기만 하면 됩니다.

다중 사이트 마이그레이션 방법:

Wordpress의 멀티컨피규레이션은 이행하기 귀찮은 작업입니다.데이터베이스의 몇 가지 변경이 수반됩니다.또, 모든 것을 수정해도, 에러 없이 동작하는 경우도 있는 것 같습니다.단, 권장되는 절차는 다음과 같습니다.

  1. 위와 같이 데이터베이스를 내보냅니다.
  2. 위와 같이 새 데이터베이스를 업로드합니다.
  3. 위와 같이 모든 Wordpress 파일을 추가합니다.
  4. wp-config를 편집합니다.php는 새로운 데이터베이스 정보를 사용하여 다음 정의를 추가합니다.

    define('MULTISITE', true);
    define('SUBDOMAIN_INSTALL', false); // true or false depending if the paths for each multisite is pointed by a subdomain.
    define('DOMAIN_CURRENT_SITE', 'localhost'); // localhost is the DOMAIN of the new location, so even if the ABS_PATH is localhost/whatever, you should have localhost here.
    define('PATH_CURRENT_SITE', '/');
    define('SITE_ID_CURRENT_SITE', 1);
    define('BLOG_ID_CURRENT_SITE', 1);
    

이 모든 것이 wp-config에 포함되어 있어야 합니다.내보내는 사이트의 php이므로 복사 붙여넣기만 하고 DOMAIN_CURRENT_SITE를 편집합니다.

  1. htaccess를 다음과 같이 편집합니다(RewriteBase /path/는 상대 경로여야 합니다.즉, 웹 사이트가 localhost/mypage에 있는 경우 "RewriteBase /mypage/"가 되어야 합니다).

    # MultiSite
    RewriteEngine On
    RewriteBase /subfolder-from-localhost/
    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]
    
  2. 데이터베이스 편집 시간!이 절차는 멀티사이트가 가지고 있는 모든 서브사이트에 대해 수행해야 합니다.테이블 "wp_site"를 입력하면 wp_site1/wp_site2 등에 복제해야 합니다.

테이블 wp_options: 필드 "site_url" 및 "home"을 (http:)localhost/subfolder(후행 슬래시 없음)로 변경합니다.

표 wp_blogs: 각 서브사이트의 모든 엔트리에 대해 "domain"을 "localhost"로 변경하고 "path"를 /subfolder/로 변경합니다(후행 슬래시가 있어야 함).

테이블 wp_site: "domain"을 "localhost"로 변경하고 "path"를 /subfolder/로 변경합니다(후행 슬래시가 있어야 함).

표 wp_sitemeta: "siteurl"을 전체 경로 즉(http:) localhost/subfolder/(후행 슬래시가 있어야 함)로 변경합니다.

  1. 이제 적어도 페이지에 액세스할 수 있어야 합니다. 그래도 리디렉션 루프나 흰색 데스 화면이 나타나면 데이터베이스 변경 사항을 다시 확인하십시오.이제 admin에 로그인하여 데이터베이스에서 하드코드된 URL을 변경해야 합니다.보통 이 작업은 "Seach and replace"라는 플러그인을 사용하여 수행하므로 이 플러그인을 다운로드하여 설치하고 검색 대상(오래된 URL)과 대체할 대상(새 URL)을 입력하여 사용하십시오.

    Search for: http://mysitename.com
    Replace with: (http:)localhost
    
  2. 멀티사이트의 기능적인 이행이 이루어졌으면 합니다.이미 언급했듯이, 저는 이것을 몇 번 해봤는데, 모든 것이 작동할지 안 할지는 거의 무작위로 보입니다.8번 중 6번은 성공했다고 말할 수 있을 것 같습니다.

편집: 다중 사이트 마이그레이션 방법이 추가되었습니다.

이것은 비슷하지만 하위 도메인을 사용하는 멀티 사이트에서는 조금 다릅니다.각 사이트 URL을 localhost(LINK)로 표시하도록 호스트 파일을 편집해야 합니다.

C:\Windows\System32\drivers\etc

127.0.0.1 localhost
::1 localhost
127.0.0.1   localhost.com
127.0.0.1   subdom1.localhost.com
127.0.0.1   subdom2.localhost.com 
etc..

그 후 위에서 설명한 대로 데이터베이스를 편집하면 위의 .htaccess 이외의 서브디렉토리 변경은 무시되지만 베이스는 /로 남습니다.

 # MultiSite

 RewriteEngine On

 RewriteBase /

 RewriteRule ^index\.php$ - [L]

인스톨에서는, 로드하는 스타일을 취득하기 위해서, 머리글과 바닥글의 몇개를 갱신할 필요가 있었습니다.

@ninja가 나를 올바른 방향으로 인도해줘서 고마워!

닌자의 대답이 많은 도움이 되었다.wp-cli를 사용하여 데이터베이스 치환을 수행함으로써 답변에 기재되어 있는 스텝의 양을 줄일 수 있기 때문에 서드파티 플러그인이 필요 없고 단일 데이터베이스 셀을 수동으로 편집할 필요가 없습니다.wp-cli의 검색 치환 기능은 적어도 통상적인 wp 사이트의 경우 제 경험으로는 놀라울 정도로 완벽합니다.하지만 닌자의 답변 단계와 조합하여 제 경우 멀티사이트와도 잘 어울렸습니다.다음은 wp-cli 설치 방법에 대한 훌륭한 설명입니다.https://wp-cli.org

실행 중인 모든 사이트에서 문자열을 바꾸려면 다음 절차를 수행합니다.

wp search-replace //oldurl.com //dev.url.test --network

예, URL 문자열은 따옴표로 둘러싸여 있지 않습니다.제 경험으로 볼 때, 견적을 통해 나타나는 문제 없이 교환이 완벽하게 진행됩니다.

특정 사이트에서 문자열을 바꾸려면:

wp search-replace //oldurl.com //dev.url.test --url=https://oldurl.com

사이트에 매핑되어 있는 URL 을 확인하려면 , 다음의 순서에 따릅니다.

wp site list --network

DB 교체는 잘 되었지만.wp-config.php에서 멀티사이트를 비활성화(모든 멀티사이트 상수 정의를 삭제)한 후 네트워크 대시보드에서 모든 플러그인을 다시 활성화해야 했습니다.

wp-cli 검색 치환 문서:https://developer.wordpress.org/cli/commands/search-replace/

링크에서 튜토리얼을 팔로우 할 수 있습니다.그것은 매우 잘 설명되고 이해하기 쉽다.

PS 6단계에서는 Velvet Blues WordPress 플러그인을 사용하는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/26860451/wordpress-move-multisite-from-server-to-localhost

반응형