Ошибка 404 для поддиректории в мультисайте
Я пытаюсь создать мультисайт в виде поддиректории и точно следовал инструкциям по настройке сети. Мультисайт, похоже, настроен правильно, файлы .htaccess и wp-config.php выглядят корректно, и я смог выполнить настройку сети, однако при переходе на страницу мультисайта появляется ошибка 404 - Not found. Это также мешает мне войти в панель администратора этого сайта.
Мой основной сайт по-прежнему работает нормально, и я могу войти в панель администратора там, а с помощью плагина я могу получить доступ к базе данных и управлять ею. Все newly созданные таблицы присутствуют, URL мультисайта и настройки выглядят правильно.
Я проверил, что файл .htaccess соответствует тому, что в WordPress. Я проверил правильность расположения .htaccess (корень public_html) и что он доступен для записи. Мы не думаем, что это проблема с постоянными ссылками, как предполагают многие источники в моем исследовании.
После обширного исследования я не смог найти решение, буду благодарен за любую помощь.
Вот мой файл .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# добавить завершающий слеш к /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]
</IfModule>
и конец моего файла конфигурации:
/**
* Для разработчиков: Режим отладки WordPress.
*
* Измените это на true, чтобы включить отображение уведомлений при разработке.
* Настоятельно рекомендуется, чтобы разработчики плагинов и тем использовали WP_DEBUG
* в своих средах разработки.
*/
define('WP_DEBUG', false);
/* Мультисайт */
define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'www.mybusinessconnect.com.au');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
/* Это все, прекратите редактирование! Счастливого блоггинга. */
/** Абсолютный путь к директории WordPress. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Подключает файлы с настройками WordPress. */
require_once(ABSPATH . 'wp-settings.php');

У меня была точно такая же проблема.
Мое решение: отредактировал файл /etc/apache2/sites-enabled/000-default.conf. Он должен выглядеть так:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/>
Options FollowSymLinks
AllowOverride all
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Это работает!

Я знаю, что это Stack Exchange, и такие комментарии обычно не приветствуются, НО СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Если у вас отсутствует файл .htaccess или вы не хотите его использовать, вам также нужно добавить блок mod_rewrite в 000-default.conf
: https://gist.github.com/nicolasramy/3206657

Я столкнулся с такой же проблемой - в WordPress Multisite при создании нового сайта получал ошибку 404 для страницы сайта и админки, хотя главная админка и дашборд работали.
Моя проблема была в конфигурации Apache - файл /etc/apache2/httpd.conf
. Нужно добавить 'AllowOverride All
' в секцию <Directory "/Users/user1/Sites">
И не забудьте включить mod_rewrite в httpd.conf
:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Иначе будет выдавать ошибку 500.
Я не знаю, что именно означают эти настройки, но это решило мою проблему. Надеюсь, поможет и вам.

Согласно документации WordPress, эти правила htaccess предназначены для мультисайтов https://wordpress.org/support/article/htaccess/
#Пример для подпапок
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# добавляем завершающий слэш к /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]
#Пример для поддоменов
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# добавляем завершающий слэш к /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
Именно эти правила я использовал без проблем на хостинговом сайте.

У меня была такая же проблема, и я перепробовал всё! Оказалось, что в начале моего файла htaccess не было точки. Я работаю в Windows, и по какой-то причине точка исчезла.
Чтобы добавить точку перед файлом в Windows, переименуйте файл в .htaccess. и Windows удалит последнюю точку, оставив первую.

Хочу упомянуть одну потенциальную причину, которая довольно очевидна, но на самом деле сложно обнаруживается: использование запрещённых символов в пути URL подсайта.
Как указано в WordPress Codex:
Адрес сайта: Разрешены только символы a-z и 0-9.
Использование запрещённых символов (например, точек) в пути поддиректории приводит к тому, что правила перезаписи в файле .htaccess не срабатывают, в результате чего сервер возвращает ответ 404.
Проработав несколько лет с профессиональными проектами на WordPress, я считал себя как минимум компетентным в этой теме, но должен признать, что потратил 2-3 часа на отладку проблемы, а затем осознал, что совершил ошибку новичка. :)
