Вопрос или проблема
У меня проблема с сайтом (часть мультисайтовой структуры).
Вдруг все статические страницы показывают список последних постов, кроме главной страницы. Единственные посты работают нормально.
Если я меняю постоянные ссылки с “имя поста” на “простые”, все работает нормально. Вот файл htaccess.
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# добавляет завершающий слеш к /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} 200 [OR]
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]
Что это может быть? Есть какие-нибудь подсказки? спасибо
Мое использование:
# добавляет завершающий слеш к /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]
# НАЧАЛО WordPress
# Директивы (строки) между "НАЧАЛО WordPress" и "КОНЕЦ WordPress" генерируются динамически
# и должны изменяться только через фильтры WordPress.
# Любые изменения директив между этими маркерами будут перезаписаны.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Я знаю, что это старая запись, но я столкнулся с той же проблемой и не нашел правильного ответа нигде. Это не проблема с файлом .htaccess или разрешениями на структуру папок. Проблема заключается в переносе сайтов WordPress из папки по умолчанию для веб-документов.
Если у вас несколько сайтов WordPress или один сайт в подпапке вашей папки веб-документов, вам нужно “ослабить доступ к контенту” для каждой подпапки в файлах apache2.conf или httpd.conf.
Когда это добавлено, вы сможете использовать “красивые постоянные ссылки” вместо почти красивых или простых постоянных ссылок.
/etc/apache2/apache2.conf
/etc/httpd/conf/httpd.conf
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# Добавлено
<Directory /var/www/html/site1/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html/site2/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# Конец добавлено
Ответ или решение
Проблема, с которой вы столкнулись, связана с использованием «красивых» постоянных ссылок (Pretty Permalinks) в WordPress. Давайте посмотрим на возможные причины и решения этой ситуации, учитывая вашу конфигурацию.
Описание проблемы
На вашем сайте, который является частью сетевой структуры (multisite), все статические страницы внезапно начали отображать список последних постов, кроме главной страницы. При этом отдельные посты работают правильно. После изменения постоянных ссылок с "имя поста" на "плоские" (plain), все снова начинает работать корректно. Это указывает на то, что проблема, вероятнее всего, связана с настройками Apache или конфигурацией файла .htaccess.
Анализ .htaccess и конфигурации сервера
Ваш файл .htaccess выглядит довольно стандартно для WordPress. Однако, обращая внимание на часть конфигурации Apache, можно выделить некоторые ключевые моменты:
-
Правила переопределения (AllowOverride): Чтобы использовать «красивые» постоянные ссылки, вам необходимо убедиться, что в конфигурации Apache для вашего каталога установлено
AllowOverride All
. Это позволяет Apache обрабатывать команды, указанные в .htaccess, в том числе правила переписывания URL.Пример конфигурации:
<Directory /var/www/html/site1/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <Directory /var/www/html/site2/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
-
Права доступа: Убедитесь, что у Apache есть необходимые права доступа к директориям ваших сайтов. Если права выставлены некорректно, это может помешать правильной обработке запросов.
-
Перезапуск сервера: После внесения любых изменений в конфигурацию Apache, не забудьте перезапустить сервер для применения изменений:
sudo systemctl restart apache2
Или для CentOS:
sudo systemctl restart httpd
Потенциальные проблемы
- Конфликт плагинов: В некоторых случаях плагины WordPress могут конфликтовать с правилами постоянных ссылок. Попробуйте временно отключить плагины, чтобы посмотреть, решит ли это проблему.
- Кэширование: Если вы используете плагины кэширования или облачные решения, такие как Cloudflare, очистьте кэш, так как старые записи могли вызывать неправильное отображение страниц.
- Обновление ссылок: Перейдите в раздел основных настроек WordPress и заново сохраните настройки постоянных ссылок. Это может помочь обновить правила в .htaccess.
Заключение
Проблема с «красивыми» постоянными ссылками в WordPress может быть вызвана несколькими факторами, и наиболее вероятная причина заключается в конфигурации вашего сервера. Проверьте настройки Apache, убедитесь в правильности прав доступа и при необходимости проводите диагностику с помощью отключения плагинов или очистки кэша. После внесения изменений всегда проверяйте результат, чтобы убедиться, что проблема решена.
Если проблема не исчезнет, рассмотрите возможность обращения к хостинг-провайдеру за дополнительной поддержкой.