Мультисайт в подпапке - Как сделать новые сайты на том же уровне подпапок, что и основной сайт

20 окт. 2013 г., 20:48:08
Просмотры: 18.2K
Голосов: 5

У меня следующая ситуация. У меня установлен WP Multisite в подпапке:

my-domain.com/subfolder/wp-multisite-root

Обычно новые сайты создаются следующим образом:

my-domain.com/subfolder/wp-multisite-root
my-domain.com/subfolder/wp-multisite-root/site1
my-domain.com/subfolder/wp-multisite-root/site2
my-domain.com/subfolder/wp-multisite-root/site3

Есть ли способ сделать так, чтобы они создавались вот так?

my-domain.com/subfolder/wp-multisite-root
my-domain.com/subfolder/site1
my-domain.com/subfolder/site2
my-domain.com/subfolder/site3

Есть еще одна особенность. В my-domain.com/subfolder/ находится другое (не WordPress) приложение.

1
Комментарии

Что означает не-WP приложение? Какие конфликты с .htaccess / slug у вас возникают?

brasofilo brasofilo
20 окт. 2013 г. 23:26:10
Все ответы на вопрос 4
1

Спустя столько лет, надеюсь, этот ответ все еще поможет вам...

Кажется, я разобрался с ситуацией, которую вы описываете. Хотя у меня нет установки WordPress в '/subfolder/', но есть установка 'в подкаталоге' для каждого языка на одном уровне:

 my-domain.com/nl/ -> основная установка, ID сайта = 1 
 my-domain.com/en/ -> первый сайт, созданный мультисайтом, ID сайта = 2
 my-domain.com/de/ -> второй сайт, созданный мультисайтом, ID сайта = 3

Это требует небольшого "вмешательства" в базу данных, но всё довольно просто.

Шаг 1: Убедитесь, что ваша основная установка мультисайта работает корректно в своем подкаталоге. В моем случае в 'wp-config.php' указано следующее:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // разрешить установку в подкаталоге (true для поддоменов)
define('DOMAIN_CURRENT_SITE', 'my-domain.com/subfolder');
define('PATH_CURRENT_SITE', '/wp-multisite-root/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

(на самом деле у меня нет '/subfolder' :))

Шаг 2: Теперь создайте новый сайт через мультисайт в подкаталоге. При вводе имени папки 'site2' WordPress сообщит, что он будет создан как: my-domain.com/subfolder/wp-multisite-root/site2 Это правильно, мы вручную удалим папку 'wp-multisite-root'

Шаг 3: Откройте phpMyAdmin/directAdmin В таблице wp_blogs отредактируйте запись вашего нового сайта. Нам нужно изменить path. Это можно сделать следующим запросом:

UPDATE `wp_blogs` SET `path` = '/site2/' WHERE `wp_blogs`.`path` = '/wp-multisite-root/site2/';

Измените имя домена и сайта соответствующим образом. Также найдите ID сайта, указанный там. Если это первый дополнительный сайт, его ID будет 2, как в моем примере.

Шаг 4: Перейдите в таблицу wp_<SITEID>_options. В нашем случае с ID сайта 2 это будет wp_2_options. Здесь нам нужно изменить option_value для записей с option_name 'siteurl' и 'home'. Это можно сделать следующими запросами:

UPDATE `wp_2_options` SET `option_value` = 'my-domain.com/subfolder/site2/' WHERE `option_name` = 'siteurl';
UPDATE `wp_2_options` SET `option_value` = 'my-domain.com/subfolder/site2/' WHERE `option_name` = 'home';

Опять же, измените домен и имя папки соответственно. Обратите внимание, что мы удаляем 'wp-multisite-root' из URL, так что site2 будет на том же уровне, что и `wp-multisite-root'.

Шаг 5: Обновите wp-admin, и ваш(и) сайт(ы) будут отображаться так, как вы хотели.

27 июл. 2016 г. 10:31:37
Комментарии

Установка мультисайта в подпапке не позволяет мне добавить новый домен сайта без того, чтобы записи не отображались как 404. Основной домен работает нормально, новый тоже работает, кроме записей, которые отображаются как 404. Я перешел к постоянным ссылкам, но это не помогает, единственное, что работает — это установка постоянной ссылки в формате index.php/%postname%/, тогда все работает, но это приводит к появлению index.php во всех URL, что выглядит некрасиво с эстетической точки зрения. Думаю, мне нужно исправить что-то в .htaccess

LΞИIИ LΞИIИ
17 сент. 2024 г. 03:59:14
0

Ответ Piemol отличный и сработал у меня. Однако я не мог войти ни на один из своих сайтов, кроме основного. Проверив свои куки, я обнаружил, что WordPress создавал куки только для моего основного сайта, а не для других подкаталогов. Используя пример OP, он создавал куки для /subfolder/wp-multisite-root, которые /subfolder/site1 не мог использовать.

Я изучил ядро WordPress, чтобы понять, что нужно исправить, и в итоге добавил этот код в свой пользовательский плагин, чтобы исправить пути для куки:

define('COOKIEPATH', '/subfolder/');
define('SITECOOKIEPATH', '/subfolder/');

В моем случае структура сайта на самом деле такая же, как у Piemol, поэтому я исправил пути для куки на корневой:

define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
23 авг. 2017 г. 17:23:07
4

Самое простое решение — сделать my-domain/subfolder/ директорией установки WordPress и базовым URL, а затем включить мультисайт, настроенный на использование поддиректорий.

20 окт. 2013 г. 20:50:05
Комментарии

Извините, забыл добавить, что в my-domain/subfolder/ находится приложение.

HoGo HoGo
20 окт. 2013 г. 21:05:45

Может, переместить приложение?

Chip Bennett Chip Bennett
20 окт. 2013 г. 21:10:50

@ChipBennett это переопределит текущие настройки сайта?

Rahman Sharif Rahman Sharif
15 июн. 2014 г. 15:15:53

Как установить директорию в подпапку?

John Jang John Jang
1 янв. 2019 г. 14:12:03
0
-1

Я пытался сделать нечто подобное, и из всего, что мне удалось выяснить, думаю, что ответ — нет, в настоящее время это невозможно :(

8 июл. 2014 г. 18:10:03