การตั้งค่าเครือข่าย wordpress ด้วยโดเมนระดับที่สาม


11

ฉันกำลังดูการตั้งค่าการติดตั้งเครือข่าย WordPress ทุกอย่างดำเนินไปอย่างราบรื่นจนกระทั่งฉันไปถึงจุดที่รูปแบบโดเมนที่ฉันต้องการไม่พอดี

ฉันต้องการมีเลย์เอาต์ดังนี้:

บล็อก. *. stackexchange.com

ตัวอย่างเช่นฉันต้องการมีหลายไซต์ในเครือข่ายที่มีลักษณะ:

blog.wordpress.stackexchange.com บล็อก
blog.apple.stackexchange.com
บล็อก $ 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> ... เสียงหวีด </ การเสียดสี> (:
Rebecca Chernoff

ฉันได้เพิ่มความโปรดปรานด้วยความหวังว่ามีบางคนมาพร้อมกับคำแนะนำทีละขั้นตอนเพื่อให้ Zypher สามารถใช้เวลากังวลเกี่ยวกับการรักษา SE และใช้เวลาน้อยลงในการค้นหาบล็อกชุมชน
ไม่มีใคร

คำตอบ:


3

คุณสามารถใช้ปลั๊กอินDomain Mapperได้ ข้อเสียคือคุณจะต้องกำหนดค่าแต่ละรายการย่อยด้วยตนเอง


น่าสนใจมันเปลี่ยนเส้นทางหรือเพียงแค่ให้บริการเนื้อหาหรือไม่ ฉันเดาว่าสิ่งที่ฉันพยายามถามคือแถบที่อยู่เปลี่ยนไปสำหรับผู้ใช้ปลายทางหรือไม่
Zypher

@Zypher ไม่เพียง แต่ให้บริการเนื้อหา
ไม่มีใคร

1
บทช่วยสอนการใช้งานปลั๊กอิน: ottopress.com/2010/…ข้อสำคัญ: ไม่มีปัญหาเมื่อคุณติดตั้ง WP และเปิดใช้งานปลั๊กอินและหลังจากการนำเข้าข้อมูลหรือระบบ moigrate นี้; มันไม่ใช่เรื่องง่ายที่จะเพิ่มปลั๊กอินนี้หลังจากบล็อกมีชีวิตก่อนการแมปโดเมน มันให้ปลั๊กอินอื่น ๆ เพื่อให้การทำงานในแบ็กเอนด์ wp เสนอราคาน้อยง่ายขึ้น wordpress.org/extend/plugins/networks-for-wordpress
bueltge

เนื่องจากไม่มีทางเลือก, มี 150 ตัวแทน
ไม่มีใคร

1

คุณสามารถทำได้ด้วยไฟล์ sunrise.php ที่กำหนดเอง นี่เป็นวิธีการทำงานของปลั๊กอินการแมปโดเมน แต่มันทำให้ส่วนหน้าสวย สำหรับสิ่งที่กำหนดเองคุณสามารถเขียน PHP อย่างง่าย ๆ เพื่อทำสิ่งเดียวกัน

สาระสำคัญของเว็บไซต์หลายรายการนั้นเกี่ยวข้องกับการค้นหาว่าไซต์ใดให้บริการ ปลั๊กอินการแมปโดเมนทำได้โดยสร้างตาราง wp_domain_mapping และเก็บข้อมูลไว้ในนั้น ดังนั้นเมื่อได้รับการร้องขอสำหรับ xxx.com จะมีลักษณะในตารางนั้นและเห็นว่าสอดคล้องกับ blog_id 123

ก่อนอื่นทำการตั้งค่า WordPress และทำให้เป็นแบบหลายไซต์ ไม่สำคัญว่าจะอยู่ที่ใดเพราะเราจะเปลี่ยนทุกอย่าง เพื่อความง่ายฉันจะใส่ไว้ที่ blog.stackexchange.com และทำให้เป็นเว็บไซต์ประเภทไดเรกทอรีย่อย (ง่ายกว่า) ไดเรกทอรีย่อยที่สร้างขึ้นน่าจะเป็นตัวบุ้ง / wordpress, / apple, / อะไรก็ตาม

ใช่แล้วคุณจะเริ่มต้นได้ที่ blog.stackexchange.com/wordpress พิจารณาสภาพแวดล้อมการจัดเตรียมของคุณ เมื่อคุณสร้างแต่ละไซต์คุณสามารถทำสิ่งต่างๆได้ที่นี่จนกว่าคุณจะตัดสินใจเปิดการแมป

หากต้องการทำแผนที่โดเมนด้วยตัวเองโดยไม่มีปลั๊กอินคุณจะทำสิ่งนี้:

ขั้นตอนที่หนึ่ง: เพิ่มdefine( 'SUNRISE', 'on' );ไปที่ด้านบนของไฟล์ wp-config.php ของคุณ

ขั้นตอนที่สอง: สร้างไฟล์ sunrise.php ในไดเรกทอรี wp-content ใส่<?phpที่ด้านบนเพื่อเริ่มต้นด้วย

ขั้นตอนที่สาม: ในไฟล์ sunrise.php จะเป็นตรรกะของคุณสำหรับการพิจารณาว่าจะโหลดเว็บไซต์ใด

คุณจะเอาพื้นฐานมาจาก$_SERVER[ 'HTTP_HOST' ]ตัวแปร วิธีที่คุณทำนั้นง่ายมาก แต่คุณต้องการทำเช่นนั้น ถ้าคุณต้องการเขียน regex เพื่อค้นหา'/blog\.(.*)\.stackexchange\.com/'จากนั้นค้นหา bit นั้นในฐานข้อมูลคุณสามารถทำได้

เนื่องจากคุณใช้กระสุนแบบเดียวกับที่นี่เป็น "ไดเรกทอรีย่อย" คุณไม่จำเป็นต้องใช้ตารางแยกต่างหาก คุณสามารถดูในตาราง 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;

สิ่งนี้จะกำหนดตัวแปรโกลบอล $ current_blog และ $ current_site แทนการปล่อยให้ฟังก์ชั่น MU ของเวิร์ดเพรสทำ

นี่จะเพียงพอที่จะทำให้ไซต์ใช้งานได้ (หลังจากที่ DNS ของคุณชี้ไปที่ไซต์นั้นและทำให้ข้อมูลโฮสต์เสมือนแยกออก) อย่างไรก็ตาม URL คงที่ส่วนใหญ่ที่ใช้ในรหัส HTML จะยังคงชี้ไปที่ blog.stackexchange.com / wordpress เนื่องจากเป็นที่ที่ไซต์จะเป็นเช่นนั้น นอกจากนี้ฟังก์ชั่น Canonical URL อาจไม่ชอบ URL และจะเปลี่ยนเส้นทางคุณเช่นกัน

หากต้องการแก้ไขปัญหาเหล่านี้คุณอาจต้องการกำหนด URL จำนวนมากที่เชื่อมโยงกับเว็บไซต์ไว้ล่วงหน้า สิ่งต่าง ๆ เช่น WP_SITEURL และ WP_HOME นอกจากนี้ WP_CONTENT_URL, WP_PLUGIN_URL และ WPMU_PLUGIN_URL ซึ่งควรครอบคลุมกรณีส่วนใหญ่ของ URL ที่ถูกปรับ

สุดท้ายคุณจะต้องตั้งค่า 'COOKIE_DOMAIN' เนื่องจากคุณต้องการให้การเข้าสู่ระบบถูกแชร์ไปทั่วทุกสิ่งคุณสามารถตั้งค่าเป็น stackexchange.com หรือสูงกว่าหากคุณไม่ต้องการให้พวกเขาแชร์การเข้าสู่ระบบ

หากคุณต้องการพูดคุยเกี่ยวกับการรวมระบบการเข้าสู่ระบบ stackexchange ปกติเข้ากับ WordPress ฉันสามารถตอบคำถามเกี่ยวกับเรื่องนั้นได้เช่นกัน :)

อย่าลังเลที่จะส่งอีเมลฉันหากคุณต้องการความช่วยเหลือเพิ่มเติมกับเรื่องนี้ ดีใจที่ได้ช่วยเหลือ: otto ที่ wordpress.org

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.