DevOps

Настройка авторизации в WordPress мультисайте через symlink

Решение проблем с доступом к страницам и ошибками в админке при использовании symlink в многосайтовой системе WordPress. Настройка прав доступа и конфигурации.

1 ответ 1 просмотр

Почему страницы сайта закрыты от просмотра для неавторизованных пользователей и как открыть к ним доступ? Установил многосайтовую систему через symlink, но при открытии любых страниц требуется авторизация. Также при входе в админку с любого домена в разделе “Файлы и папки” для второго домена domen.ru возникает ошибка “Возможно, недостаточно прав для просмотра содержимого данного каталога”. Подскажите, как решить обе проблемы?

Проблемы с авторизацией и доступом к файлам в многосайтовом WordPress часто возникают из-за неправильной настройки прав доступа и конфигурации symlink. Чтобы решить эти проблемы, необходимо проверить настройки htaccess, права доступа к файлам, а также корректно настроить конфигурацию мультисайта через symlink.

Содержание


Основные причины проблем с доступом


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

Когда вы устанавливаете многосайтовую систему через symlink, важно понимать, что WordPress использует специальные правила переадресации для обработки запросов к различным сайтам. Если эти правила настроены некорректно, система может требовать авторизации для доступа к любым страницам, включая публичный контент.

Еще одной распространенной причиной является конфликт между настройками безопасности WordPress и правами доступа symlink. WordPress имеет встроенные механизмы безопасности, которые могут блокировать доступ к файлам, если права доступа кажутся подозрительными или не соответствуют рекомендациям.


Правильная настройка прав доступа для symlink является критически важной для функционирования многосайтового WordPress. Когда вы создаете символические ссылки для ваших сайтов, необходимо убедиться, что веб‑сервер имеет достаточные права для чтения и выполнения этих ссылок.

Для начала проверьте текущие права доступа к файлам с помощью команды в терминале:

bash
ls -la /путь/к/wordpress/

Рекомендуемые права для файлов и директорий в WordPress:

  • Файлы: 644 (владелец может читать и писать, группа и другие могут только читать)
  • Директории: 755 (владелец может читать, писать и выполнять, группа и другие могут читать и выполнять)

Для symlink убедитесь, что целевые файлы и директории имеют правильные права. Если symlink указывает на директорию с неправильными правами, это может вызвать проблемы с доступом.

Также важно проверить настройки вашего веб‑сервера. Для Apache убедитесь, что модуль mod_authz_core не блокирует доступ через symlink. Добавьте в конфигурацию Apache:

apache
<Directory "/путь/к/symlink">
 Options Indexes FollowSymLinks
 AllowOverride All
 Require all granted
</Directory>

Для Nginx добавьте в конфигурацию:

nginx
location /путь/к/symlink {
 alias /путь/к/оригинальной/директории;
 autoindex on;
}

Решение проблемы с авторизацией


Чтобы решить проблему, при которой все страницы требуют авторизации, необходимо проверить и настроить несколько ключевых файлов конфигурации WordPress.

Во‑первых, откройте файл wp-config.php и убедитесь, что определены правильные константы для мультисайта:

php
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'основной-домен.ru');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Во‑вторых, проверьте файл .htaccess в корневой директории WordPress. Для мультисайта он должен содержать следующий код:

apache
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin/?$ $1wp-admin/index.php [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L]
RewriteRule . index.php [L]

Если проблема сохраняется, попробуйте временно отключить плагины, особенно те, которые связаны с безопасностью или ограничением доступа. Иногда конфликт между плагинами и мультисайтовой конфигурацией может вызывать подобные проблемы.

Также убедитесь, что в настройках WordPress (Настройки > Общие) указаны правильные URL‑адреса для вашего сайта. Некорректные URL могут вызывать проблемы с авторизацией.

Исправление ошибки в админке “Файлы и папки”


Ошибка “Возможно, недостаточно прав для просмотра содержимого данного каталога” для второго домена в разделе “Файлы и папки” обычно возникает из-за неправильных прав доступа к директориям через symlink.

Чтобы исправить эту проблему, выполните следующие шаги:

  1. Проверьте права доступа к директориям, на которые указывают symlink:
bash
ls -la /путь/к/wordpress/wp-content/blogs.dir/
  1. Убедитесь, что веб‑сервер (обычно www-data или apache) имеет права на чтение и выполнение этих директорий. Если нет, измените права:
bash
sudo chown -R www-data:www-data /путь/к/wordpress/wp-content/blogs.dir/
sudo chmod -R 755 /путь/к/wordpress/wp-content/blogs.dir/
  1. Для symlink убедитесь, что права доступа к целевым директориям правильные:
bash
sudo chmod -R 755 /путь/к/оригинальным/директориям/
  1. Если вы используете WordPress с nginx, убедитесь, что в конфигурации nginx указаны правильные права для работы с symlink:
nginx
location / {
 try_files $uri $uri/ /index.php?$args;
}

location ~ .php$ {
 include snippets/fastcgi-php.conf;
 fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
 fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
 fastcgi_param DOCUMENT_ROOT $realpath_root;
}
  1. Проверьте, нет ли в конфигурации WordPress ограничений на доступ к файлам. В файле wp-config.php убедитесь, что нет констант, ограничивающих доступ:
php
// Эти строки могут вызывать проблемы
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);
  1. Если проблема сохраняется, попробуйте создать новый symlink с правильными правами:
bash
sudo rm /путь/к/существующему/symlink
sudo ln -s /путь/к/оригинальной/директории /путь/к/новому/symlink
sudo chown -R www-data:www-data /путь/к/новому/symlink
sudo chmod -R 755 /путь/к/новому/symlink

Оптимизация безопасности мультисайта


После решения проблем с доступом важно правильно настроить безопасность вашего многосайтового WordPress. Это поможет предотвратить будущие проблемы и защитить ваши сайты от несанкционированного доступа.

Во‑первых, настройте правильные права доступа к файлам. Файлы WordPress должны принадлежать пользователю веб‑сервера (обычно www-data или apache), а не root. Используйте следующие команды:

bash
sudo chown -R www-data:www-data /путь/к/wordpress/
sudo find /путь/к/wordpress/ -type d -exec chmod 755 {} \;
sudo find /путь/к/wordpress/ -type f -exec chmod 644 {} \;

Во‑вторых, настройте SSL для всех сайтов в мультисайте. Это обеспечит безопасную передачу данных и предотвратит проблемы с авторизацией. Используйте Let’s Encrypt для бесплатного SSL‑сертификата:

bash
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d основной-домен.ru -d дополнительный-домен.ru

В‑третьих, настройте двухфакторную аутентификацию для всех администраторов сайтов в мультисайте. Это значительно повысит безопасность и предотвратит несанкционированный доступ к админ‑панели.

В‑четвертых, регулярно обновляйте WordPress, все плагины и темы. Устаревшие версии могут содержать уязвимости, которые могут быть использованы для атак на ваш мультисайт.

Также рекомендуется использовать плагины безопасности, такие как Wordfence или Sucuri Security, для мониторинга и защиты вашего мультисайта от угроз.

Заключение


Проблемы с доступом к страницам и ошибками в админке при использовании symlink в многосайтовой системе WordPress обычно решаются путем корректной настройки прав доступа и конфигурации мультисайта. Основные шаги включают проверку и настройку прав доступа к файлам и директориям, корректную конфигурацию .htaccess и wp-config.php, а также настройку прав доступа для symlink.

Важно помнить, что безопасность мультисайта должна быть приоритетом, поэтому после решения текущих проблем уделите внимание настройке SSL, двухфакторной аутентификации и регулярному обновлению компонентов системы. Правильная настройка не только решит текущие проблемы, но и предотвратит их возникновение в будущем.

Источники


  1. WordPress Codex Multisite Setup — Официальная документация по настройке мультисайта WordPress: https://codex.wordpress.org/Create_a_Network
  2. Apache Symbolic Links Guide — Инструкции по настройке symlink в Apache: https://httpd.apache.org/docs/current/mod/mod_alias.html#alias
  3. WordPress Permissions Best Practices — Рекомендации по настройке прав доступа в WordPress: https://wordpress.org/support/article/hardening-wordpress/#file-permissions
  4. Nginx Configuration for WordPress Multisite — Настройка Nginx для многосайтового WordPress: https://nginx.org/en/docs/http/ngx_http_core_module.html#alias
  5. WordPress Security Checklist — Проверочный список для безопасности WordPress: https://wordpress.org/support/article/hardening-wordpress/
Авторы
Проверено модерацией
Модерация