Налаштування мережі 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> ... свисти </ сарказм> (:
Ребекка Чернофф

Я додав щедрості, сподіваючись, що хтось прийде разом із приємним покроковим керівництвом, щоб Zypher міг більше часу переживати, переживаючи про те, щоб продовжувати SE та менше часу шукати блоги у спільнотах.
ніхто

Відповіді:


3

Для цього ви можете використовувати плагін Map Mapper . Зворотним боком є ​​те, що ви мали б налаштувати кожен підблок вручну.


Цікаво, чи робить це переадресація чи просто подає вміст? Я думаю, що я намагаюся запитати, чи змінюється адресний рядок для кінцевого користувача?
Зіфер

@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' ]змінній. Як зробити це точно - це просто: проте ви хочете це зробити. Якщо ви хочете просто написати регулярний вираз, '/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;

Це заздалегідь визначає глобальні змінні $ current_blog та $ current_site замість того, щоб дозволити їм виконувати MU функції WordPress.

Цього буде достатньо для того, щоб сайт запрацював і працював (після того, як ваш 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.