Thiết lập mạng wordpress với tên miền cấp ba


11

Tôi đã xem xét việc thiết lập cài đặt mạng WordPress. Mọi thứ đã diễn ra khá suôn sẻ cho đến khi tôi đi đến điểm mà bố cục tên miền mong muốn của tôi không phù hợp lắm.

Tôi muốn có một bố cục như sau:

blog. *. stackexchange.com

vì vậy, ví dụ, tôi muốn có nhiều trang web trong một mạng giống như:

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

Tôi nghĩ rằng tôi có thể làm việc này với một số quy tắc viết lại sáng tạo và can thiệp DNS thủ công nhưng tôi muốn có một thiết lập để tôi có thể giao việc tạo mọi thứ trừ DNS cho người khác (chúng tôi đã có quy trình tự động tạo tất cả các tên miền phụ cần thiết trong DNS)

Từ việc tôi chơi và đọc WP thực sự muốn các trang web trở thành tên miền cấp độ tiếp theo, vì vậy trong ví dụ trên của tôi, nó muốn blog WP chính có tại stackexchange.com và các blog mạng có tại wordpress.stackexchange.com.

Có cách nào để đạt được hiệu quả mong muốn của tôi hay tôi chỉ nên đi theo con đường làm blog.stackexchange.com/$site?


2
Tôi khá chắc chắn rằng bạn sẽ phải sử dụng các quy tắc viết lại sáng tạo và can thiệp DNS thủ công. Tôi cũng khá chắc chắn đây là thiết kế phụ để bạn không thể tạo ra mọi thứ trừ DNS để <del> tôi </ del> <in> người khác </ in> ... huýt sáo </ in mỉa mai> (:
Rebecca Chernoff

Tôi đã thêm một tiền thưởng với hy vọng ai đó đi cùng với một hướng dẫn từng bước tốt đẹp để Zypher có thể dành nhiều thời gian hơn để lo lắng về việc giữ SE và ít thời gian tìm hiểu các blog cộng đồng.
không ai

Câu trả lời:


3

Bạn có thể sử dụng plugin Domain Mapper cho việc này. Hạn chế là bạn đã tự cấu hình từng blog con.


Thật thú vị, nó làm một chuyển hướng hoặc chỉ phục vụ nội dung? Tôi đoán những gì tôi đang cố hỏi là thanh địa chỉ có thay đổi cho người dùng cuối không?
Zypher

@Zypher Không, nó chỉ phục vụ nội dung.
không ai

1
Hướng dẫn sử dụng plugin: ottopress.com/2010/ Khăn Quan trọng: không có vấn đề gì, khi bạn cài đặt WP và kích hoạt plugin và sau khi nhập dữ liệu hoặc hệ thống moigrate này; Thật không dễ dàng để thêm plugin này sau khi blog có một cuộc sống trước khi ánh xạ tên miền. nó cũng cung cấp các plugin khác để làm cho công việc trong wp phụ trợ dễ dàng hơn một chút. wordpress.org/extend/plugins/networks-for-wordpress
bueltge

do thiếu thay thế, có +150 rep.
không ai

1

Bạn có thể làm điều này với một tập tin sunawn.php tùy chỉnh. Đây thực chất là cách các plugin lập bản đồ miền hoạt động, tuy nhiên nó đặt một giao diện đẹp cho nó. Đối với một cái gì đó tùy chỉnh, bạn có thể viết một số PHP đơn giản để làm về cơ bản điều tương tự.

Bản chất của multisite liên quan đến việc tìm ra trang web nào sẽ phục vụ. Plugin ánh xạ tên miền thực hiện điều này bằng cách tạo bảng wp_domain_mapping và lưu trữ thông tin trong đó. Do đó, khi nhận được yêu cầu cho xxx.com, nó sẽ nhìn vào bảng đó và thấy rằng nó tương ứng với blog_id 123.

Đầu tiên, tạo một thiết lập WordPress và làm cho nó nhiều trang. Không quan trọng nơi nó thực sự sống, bởi vì chúng ta sẽ thay đổi tất cả. Để đơn giản, tôi sẽ đặt nó tại blog.stackexchange.com và biến nó thành một trang web loại thư mục con (những trang này dễ dàng hơn). Các thư mục con được tạo sẽ có khả năng là sên. / wordpress, / apple, / bất cứ điều gì.

Vì vậy, có, để bắt đầu, bạn thực sự làm cho nó sống tại blog.stackexchange.com/wordpress. Hãy xem đây là môi trường dàn dựng của bạn. Khi bạn tạo từng trang web, bạn có thể thực hiện công cụ tại đây cho đến khi bạn quyết định bật ánh xạ.

Để tự lập bản đồ tên miền, không cần plugin, bạn sẽ làm một cái gì đó như thế này:

Bước một: thêm define( 'SUNRISE', 'on' );vào đầu tệp wp-config.php của bạn.

Bước hai: tạo tệp sunawn.php trong thư mục wp-content. Đặt <?phpở đầu để bắt đầu với.

Bước ba: Trong tệp sunawn.php sẽ là logic của bạn để xác định trang web nào sẽ tải.

Bạn sẽ dựa trên $_SERVER[ 'HTTP_HOST' ]biến này. Làm thế nào bạn làm điều đó chính xác là dễ dàng: tuy nhiên bạn muốn làm điều đó. Nếu bạn muốn chỉ cần viết một regex để tìm '/blog\.(.*)\.stackexchange\.com/'và sau đó tìm bit đó trong cơ sở dữ liệu, bạn có thể làm điều đó.

Vì bạn đang sử dụng cùng một con sên ở đây là "thư mục con", nên bạn không cần một bảng riêng. Bạn chỉ có thể nhìn vào bảng wp_bloss chính để tìm trang bạn cần. Một cái gì đó tương tự như thế này:

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

Khi bạn có $ current_blog, thì bạn cần mã sau đây:

$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;

Điều này xác định trước các biến toàn cầu $ current_blog và $ current_site thay vì để các hàm MU của WordPress làm điều đó.

Điều này là đủ để làm cho trang web hoạt động và hoạt động (sau khi DNS của bạn trỏ đến nó và sắp xếp các công cụ lưu trữ ảo), tuy nhiên hầu hết các URL tĩnh được sử dụng trong mã HTML vẫn sẽ trỏ đến blog.stackexchange.com / wordpress, vì đó là nơi trang web sẽ thực sự. Ngoài ra, chức năng URL Canonical có thể sẽ không thích URL và cũng sẽ chuyển hướng bạn.

Để khắc phục những vấn đề này, bạn cũng có thể muốn xác định trước một số URL được liên kết với trang web. Những thứ như WP_SITEURL và WP_HOME. Ngoài ra, WP_CONTENT_URL, WP_PLUGIN_URL và WPMU_PLUGIN_URL. Điều đó sẽ bao gồm hầu hết các trường hợp các URL được điều chỉnh.

Cuối cùng, bạn sẽ muốn đặt 'COOKIE_DOMAIN'. Vì bạn có thể muốn đăng nhập được chia sẻ trên toàn bộ sự việc, bạn có thể đặt thông tin đó thành stackexchange.com hoặc thậm chí cao hơn nếu bạn không muốn chúng được chia sẻ thông tin đăng nhập.

Nếu bạn muốn nói về việc tích hợp hệ thống đăng nhập stackexchange bình thường vào WordPress, tôi cũng có thể trả lời các câu hỏi về điều đó, nhưng nó sẽ chi tiết hơn một câu trả lời. :)

Vui lòng gửi email cho tôi nếu bạn muốn giúp đỡ thêm với điều này. Vui mừng được hỗ trợ: otto tại wordpress.org.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.