3 단계 도메인으로 워드 프레스 네트워크 설정


11

WordPress 네트워크 설치를 설정하려고했습니다. 원하는 도메인 레이아웃이 잘 맞지 않을 때까지 모든 것이 순조롭게 진행되었습니다.

다음과 같은 레이아웃을 원합니다.

blog. *. stackexchange.com

예를 들어 네트워크에 다음과 같은 여러 사이트를 만들고 싶습니다.

blog.wordpress.stackexchange.com
blog.apple.stackexchange.com
blog. $ site.stackexchange.com

내가 생각하는 나는이 몇 가지 창의적인 다시 쓰기 규칙 작업 및 수동 DNS 개입을 얻을 수 있지만 오히려 내가 모든 것을 창조하지만, 다른 사람에게 DNS를 손으로 할 수있는 설정이있을 것이다 (우리는 이미 자동으로하는 방법이 DNS에 필요한 모든 하위 도메인 만들기)

WP를 재생하고 읽는 것에서 실제로 사이트가 다음 수준의 도메인이되기를 원하므로 위의 예에서 기본 WP 블로그는 stackexchange.com에 있고 네트워크 블로그는 wordpress.stackexchange.com에 있습니다.

원하는 효과를 얻을 수있는 방법이 있습니까? 아니면 blog.stackexchange.com/$site를 수행하는 경로로 가야합니까?


2
창의적인 재 작성 규칙과 수동 DNS 개입을 사용해야한다고 확신합니다. 또한 이것은 의도적으로 설계된 것이므로 DNS 이외의 모든 것을 만들 수 없으므로 <del> me </ del> <ins> 다른 사람 </ ins> ... 휘파람 </ sarcasm> (:
Rebecca Chernoff

Zypher가 SE를 유지하는 것에 대해 더 많은 시간을 할애하고 커뮤니티 블로그를 보는 데 더 적은 시간을 할애 할 수 있기를 바랍니다.
아무도

답변:


3

이를 위해 도메인 매퍼 플러그인을 사용할 수 있습니다 . 각 하위 블로그를 수동으로 구성해야한다는 단점이 있습니다.


흥미 롭습니다. 리디렉션하거나 콘텐츠를 제공합니까? 내가 묻는 것은 최종 사용자의 주소 표시 줄이 바뀌는 것입니까?
Zypher

@Zypher 아니요, 컨텐츠 만 제공합니다.
아무도

1
플러그인 사용을위한 튜토리얼 : ottopress.com/2010/… 중요 : WP를 설치하고 플러그인을 활성화 할 때와이 가져 오기 데이터 또는 시스템을 마이그레이션 한 후에는 문제가 없습니다. 블로그에 도메인 매핑 이전의 수명이 다한 후에이 플러그인을 추가하는 것은 쉽지 않습니다. 그것은 또한 다른 플러그인을 제공하여 wp 백엔드의 작업을 쉽게 입찰 할 수있게합니다. wordpress.org/extend/plugins/networks-for-wordpress
bueltge

대안이 없기 때문에 +150 회
아무도

1

사용자 정의 된 sunrise.php 파일을 사용하여이를 수행 할 수 있습니다. 이것은 본질적으로 도메인 매핑 플러그인이 작동하는 방식이지만 꽤 프론트 엔드를 사용합니다. 사용자 정의를 위해 기본적으로 동일한 작업을 수행하는 간단한 PHP를 작성할 수 있습니다.

멀티 사이트의 본질은 어떤 사이트를 제공할지 파악하는 것입니다. 도메인 맵핑 플러그인은 wp_domain_mapping 테이블을 작성하고 정보를 저장하여이를 수행합니다. 따라서 xxx.com에 대한 요청을 받으면 해당 테이블을보고 blog_id 123에 해당하는 것을 확인합니다.

먼저 워드 프레스 설정을하고 여러 사이트로 만듭니다. 우리가 모든 것을 바꿀 것이기 때문에 그것이 실제로 사는 곳은 중요하지 않습니다. 간단히하기 위해 blog.stackexchange.com에 넣고 하위 디렉토리 유형 사이트로 만들었습니다 (더 쉬운 사이트). 생성 된 서브 디렉토리는 아마도 슬러그 일 것입니다. / wordpress, / apple, / 무엇이든

예, 우선 blog.stackexchange.com/wordpress에 게시하고 있습니다. 이를 준비 환경으로 고려하십시오. 각 사이트를 만들 때 매핑을 설정하기로 결정할 때까지 여기에서 작업 할 수 있습니다.

플러그인없이 도메인 매핑을 직접 수행하려면 다음과 같이하십시오.

1 단계 : define( 'SUNRISE', 'on' );wp-config.php 파일의 맨 위에 추가 하십시오.

2 단계 : wp-content 디렉토리에 sunrise.php 파일을 만듭니다. 넣어 <?php시작하는 상단.

3 단계 : sunrise.php 파일에서로드 할 사이트를 결정하기위한 논리가됩니다.

$_SERVER[ 'HTTP_HOST' ]변수 를 기반으로합니다 . 그렇게하는 방법은 간단합니다. 그러나하고 싶습니다. 정규식을 작성 '/blog\.(.*)\.stackexchange\.com/'하여 데이터베이스에서 찾은 다음 해당 비트를 찾으려면 그렇게 할 수 있습니다.

여기서 "서브 디렉토리"와 동일한 슬러그를 사용하기 때문에 별도의 테이블이 필요하지 않습니다. 기본 wp_blogs 테이블에서 필요한 사이트를 찾을 수 있습니다. 이것과 비슷한 것 :

$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = '/wordpress/' LIMIT 1" );

$ current_blog가 있으면 다음 코드가 필요합니다.

$current_blog->domain = $_SERVER[ 'HTTP_HOST' ];
$current_blog->path = '/';
$blog_id = $current_blog->blog_id;
$site_id = $current_blog->site_id;
$current_site = $wpdb->get_row( "SELECT * from {$wpdb->site} WHERE id = '{$current_blog->site_id}' LIMIT 0,1" );
$current_site->blog_id = $current_blog->blog_id;

이것은 WordPress의 MU 기능이 수행하는 대신 $ current_blog 및 $ current_site 전역 변수를 사전 정의합니다.

이것은 DNS가 사이트를 가리키고 가상 호스팅 항목을 정렬 한 후에 사이트를 시작하고 작동시키기에 충분하지만 HTML 코드에 사용되는 대부분의 정적 URL은 여전히 ​​blog.stackexchange.com을 가리 킵니다. / wordpress는 사이트가 실제로있는 위치이기 때문입니다. 또한 정식 URL 기능은 URL을 좋아하지 않으며 리디렉션 할 수도 있습니다.

이러한 문제를 해결하려면 사이트와 관련된 여러 URL을 미리 정의하고 싶을 수도 있습니다. WP_SITEURL 및 WP_HOME과 같은 것. 또한 WP_CONTENT_URL, WP_PLUGIN_URL 및 WPMU_PLUGIN_URL입니다. 조정되는 대부분의 URL을 다루어야합니다.

마지막으로 'COOKIE_DOMAIN'을 설정하고 싶을 것입니다. 로그인 전체를 공유 할 수 있기 때문에 stackexchange.com으로 설정하거나 공유 로그인을 원하지 않는 경우 더 높게 설정할 수 있습니다.

일반적인 stackexchange 로그인 시스템을 WordPress에 통합하는 것에 대해 이야기하고 싶다면 그것에 대해서도 질문에 대답 할 수 있지만 조금 더 자세한 답변이 될 것입니다. :)

도움이 필요하시면 언제든지 이메일을 보내 주시기 바랍니다. 기꺼이 도와 드리겠습니다 : wordpress.org의 오토.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.