Intereting Posts
Как добавить редактируемые / динамические значения в раскрывающееся меню Meta Box Скрыть имя страницы в заголовке страницы wordpress Плагин не активируется Лучшая эффективность работы почты? Может ли заказ почтового списка по meta_value вызвать проблему производительности? Пользовательский Post-to-Post с несколькими родителями? Общее количество сообщений в запросе (категория / тег / автор / результаты поиска / главная страница …) Как предотвратить появление апострофов и котировок в постоянных ссылках? Что такое взлом IP-комментариев сервера Пользовательский тип сообщения WP 4.4 не может добавлять новые Получить полное имя автора Как получить собственный URL-адрес изображения определенного размера Таксономии существуют, но не появляются Получить все сообщения (любого типа сообщений), вложение которых используется в Удалить меню настройки фона и заголовка из меню Appearance без CSS или JS

Подкаталог multisite – только root admin доступен в NGINX

Я пытаюсь установить многозадачный подкаталог, установленный в NGINX, с ядром WordPress в своем собственном подкаталоге и сталкиваясь с некоторыми проблемами.

Я использую эту файловую структуру:

/home/site/dev.site.com/current/public/ --- path to webroot /home/site/dev.site.com/current/public/wp/ --- path to WP root /home/site/dev.site.com/current/public/wp/wp-admin/ --- path to WP admin root

Моя целевая структура URL:

dev.site.com/wp-admin/network/ --- network admin dev.site.com/ --- root site dev.site.com/wp-admin/ --- root site admin dev.site.com/[sitename] --- additional sites dev.site.com/[sitename]/wp-admin --- additional site admin

Мое многоканальное переписывание NGINX:

rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /wp/$2 last; rewrite ^/([_0-9a-zA-Z-]+/)?(.*\.php)$ /wp/$2 last;

Здесь моя полная конфигурация NGINX.

В настоящее время я могу получить доступ к администратору сети (на dev.site.com/wp-admin/network/ ), корневому сайту (на dev.site.com ) и корневой панели администратора сайта (на dev.site.com/wp-admin/ ).

Когда я пытаюсь получить доступ к любому из дополнительных сайтов ( dev.site.com/[sitename] ), я получаю 404s (обрабатывается WordPress). Когда я пытаюсь получить доступ к их панелям администратора ( dev.site.com/[sitename]/wp-admin/ ), я получаю панель управления администратора корневого сайта (по URL-адресу, [sitename] ).

Я немного озадачен тем, почему это не работает – все кажется правильным, но, очевидно, я пропускаю какой-то существенный бит. Мое предположение заключается в том, что это связано с моей конфигурацией nginx, но я не совсем уверен.

У кого-нибудь есть опыт работы с этим типом конфигурации? Помощь очень ценится!

EDIT: я проверил свой журнал перезаписи, и nginx, похоже, правильно обрабатывает переписывание и передает правильный URL GET и все:

2014/09/22 10:38:35 [notice] 4857#0: *54 rewritten data: "/wp/wp-admin/index.php", args: "", client: 127.0.0.1, server: dev.site.com, request: "GET /subsite/wp-admin/ HTTP/1.1", host: "dev.site.com", referrer: "http://dev.site.com/wp/wp-admin/"

По какой-то причине администратор WP не подбирает, что запрос предназначен для дочернего узла, и вместо этого просто возвращает корень сайта …

EDIT 2: я установил mu-plugin, который просто выплевывает get_admin_url() , и кажется, что WordPress определенно считает, что он находится в другом месте, чем URL-адрес, который он фактически возвращает. Когда я dev.site.com/subsite/wp-admin/ , get_admin_url() возвращает http://dev.site.com/wp-admin/ путь к корневому администратору сайта. Сюжет сгущается …

EDIT 3: (Извините за все изменения.) Я могу заставить загружать правильный блог, написав функцию, которая switch_to_blog( $id ) к init и запускает switch_to_blog( $id ) , но это явно решение грубой силы. WordPress должен знать, какой блог загружать, и просто загружать его, черт возьми.

Solutions Collecting From Web of "Подкаталог multisite – только root admin доступен в NGINX"

Я не уверен на 100%, как я это исправил, но я это сделал.

Несколько вещей, которые я сделал:

Убедитесь, что вы очистили файлы cookie или протестировали в окне инкогнито. Файлы cookie для входа в систему вызвали у меня некоторые проблемы.

Я заменил свои nginx-переписывания:

rewrite ^/(site1/|site2/|site3/)?(wp-(content|admin|includes).*)$ /wp/$2 break; rewrite ^/(?!wp/)(site1/|site2/|site3/)?(.*\.php)$ /wp/$2 break;

Поскольку я имею дело с небольшой сетью с четко определенными сайтами, я смог включить их непосредственно в регулярное выражение. Возможно, вам нужно сделать что-то более широкое; YMMV.

После перезагрузки моего сервера и очистки файлов cookie это, казалось, сделало трюк!