Wordpress multisite и пути к стилям в режиме подкаталогов
Настраиваю на только что установленном WP мультисайт по инструкции.
Сначала добавляю в конфиг константу define('WP_ALLOW_MULTISITE', true);
Далее следую инструкциям в админ-панели на экране установок сети, выбрав режим подкаталогов:
В .htaccess заменяю правила WordPress на следующие:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
В конфиг добавляю константы:
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'multisites');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
Создаю сайт 'test' с темой оформления Twenty Twenty, перехожу на его главную страницу и вижу, что стили накрылись тазиком. Смотрю как они подключены:
<link rel='stylesheet' id='dashicons-css' href='http://multisites/test/wp-includes/css/dashicons.min.css?ver=5.3.2' media='all' />
<link rel='stylesheet' id='admin-bar-css' href='http://multisites/test/wp-includes/css/admin-bar.min.css?ver=5.3.2' media='all' />
<link rel='stylesheet' id='wp-block-library-css' href='http://multisites/test/wp-includes/css/dist/block-library/style.min.css?ver=5.3.2' media='all' />
<link rel='stylesheet' id='twentytwenty-style-css' href='http://multisites/test/wp-content/themes/twentytwenty/style.css?ver=1.1' media='all' />
Та же беда со скриптами. Та же беда в админке созданного сайта:
<script src='http://multisites/test/wp-includes/js/dist/dom-ready.min.js?ver=2.5.1'></script>
<script src='http://multisites/test/wp-includes/js/dist/a11y.min.js?ver=2.5.1'></script>
Часть путей содержит подкаталог, которого на самом деле нет. Не могу понять что я упускаю, почему WP не возвращает пути вида http://multisites/wp-content/themes/twentytwenty/style.css или http://multisites/wp-includes/js/dist/dom-ready.min.js?
Кто-нибудь сталкивался с такой проблемой? Как решали?
Ответы (2 шт):
Постоянные ссылки по-прежнему будут работать, хотя на основном блоге (т.е. на первом из созданных) к адресам будет добавлен префикс blog, и они примут вид domain.com/blog/YYYY/MM/POSTNAME
Это сделано, чтобы предотвратить конфликты между страницами и новыми сайтами в режиме подкаталогов. На текущий момент нет простого способа это изменить, поскольку в этом случае WordPress не сможет автоматически разрешать конфликты между основным и дочерними сайтами. Это будет исправлено в одной из следующих версий WordPress.
Вроде там надо играться с путями для подключения стилей и скриптов.
В общем проблема была в том, что nginx настроен на отдачу статики. В моём случае пришлось закомментировать вот эти строки в настройках чтобы всё заработало как надо:
location ~* ^.+\.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv|svgz?|ttf|ttc|otf|eot|woff2?)$ {
expires 1d;
access_log off;
}