Постоянные ссылки не работают на втором установленном WordPress в подкаталоге.

Вопрос или проблема

У меня установлен основной WordPress в корневой директории, и теперь из-за долгой истории с несовместимыми плагинами мне нужно установить вторую полную версию WordPress в подпапке.

Главный сайт работает нормально, как и сайт в подпапке. Но это только до тех пор, пока я не активирую красивые постоянные ссылки на подсайте.

Как только на подсайте активированы постоянные ссылки, доступна только главная страница, любая другая страница захватывается основной установкой, которая выдает 404.

У меня следующее в основном .htaccess (в корневой папке сайта)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

<Directory /path/to/subdir>
RewriteEngine On
RewriteBase /subdir/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subdir/index.php [L]
</Directory>

А это содержимое .htaccess, который находится в подпапке

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /subdir/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subdir/index.php [L]
</IfModule>
# END WordPress

Я думал, что либо .htaccess в подпапке, либо директива <Directory> в основном .htaccess будет работать. В данный момент я в замешательстве.

Чаще всего эта проблема решается после сброса постоянных ссылок. Я имею в виду, что нужно просто нажать ‘Сохранить изменения’ на странице ‘Настройки постоянных ссылок’ в административной панели. Однако вы сказали, что пробовали красивые постоянные ссылки, и это не работает.

В разделе “Настройки > Основные”, пожалуйста, подтвердите, что вы обновили “Адрес WordPress (URL)” и “Адрес сайта (URL)” на подпапку.

Можете ли вы создать поддомен? Ваша подпапка будет указывать через поддомен с новым файлом htaccess. Надеюсь, что следующий код не находится в вашей подпапке.

RewriteCond %{HTTP_HOST} ^example.com

RewriteRule (.*) http://www.example.com/$1 [R=301,L]

Ответ или решение

Почему постоянные ссылки не работают на втором экземпляре WordPress, установленном в подкаталоге

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

1. Проверка настроек .htaccess

На основе информации, предоставленной в вашем запросе, вы имеете два файла .htaccess: один в корне вашего сайта и другой в подкаталоге, содержащем ваш второй экземпляр WordPress.

Основной .htaccess в корне сайта:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
.htaccess в подкаталоге:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /subdir/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subdir/index.php [L]
</IfModule>
# END WordPress

Проблемы и Возможные Решения

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

    <Directory /path/to/subdir>
    RewriteEngine On
    RewriteBase /subdir/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /subdir/index.php [L]
    </Directory>

    Убедитесь, что путь к директории указан верно.

  2. Проблема с настройками WordPress:
    Убедитесь, что в админке WordPress для второго сайта в разделе "Настройки > Общие" правильно указаны URL-адреса WordPress и сайта. Они должны содержать адрес подкаталога. Например:

    • WordPress Address (URL): http://domain.com/subdir
    • Site Address (URL): http://domain.com/subdir
  3. Сброс пермалинков:
    После внесения изменений, не забудьте сбросить настройки постоянных ссылок. Для этого перейдите на вкладку «Настройки > Постоянные ссылки» и просто нажмите «Сохранить изменения» без изменений. Это должно обновить правила перезаписи.

  4. Проверка модулей Apache:
    Убедитесь, что у вас включен модуль mod_rewrite на сервере. Вы можете проверить это, создав файл phpinfo(), и уверившись, что mod_rewrite активен.

  5. Кеширование:
    Если вы используете кеширование на сервере или с помощью плагинов, попробуйте очистить кеш. В некоторых случаях устаревшие данные могут вызывать проблемы с отображением новых постоянных ссылок.

  6. Создание поддомена:
    Если у вас возникают проблемы даже после всех проверок, рассмотрите возможность создания поддомена для второго экземпляра. Это позволяет упростить конфигурацию и избежать конфликтов.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...