Сайты WP/магазины Woocommerce в нескольких подсистемах сломаны после миграции

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

У меня сейчас действительно проблема с некоторыми сайтами на WP. У нас есть основной сайт и несколько установок WP в подпапках, связанных с франшизой, но все они отдельные, не мультисайт (не знаю, почему, унаследовал). Сайты хорошо работали на SiteGround, но мы недавно мигрировали на новый сервер, и миграция всё ещё работает неправильно.

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

Также были много проблем с другими страницами, но переименовав файл web.config в web.config.bak на основном сайте, я избавился от многих проблем. Но теперь на основном сайте у меня остался пустой файл .htaccess, и мне кажется, что есть люди, которые ведут такие магазины в подпапках и на основном домене, так что если кто-то может посоветовать, как исправить настройку, буду весьма признателен. Не знаю, проблема ли в каждой установке подсайта или в основном. Пример файла web.config для подсайта (с выделением)

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <remove name="Main Rule"/>
        <rule name="YourSubFolderRuleName" patternSyntax="Wildcard">
          <match url="*"/>
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
          </conditions>
          <action type="Rewrite" url="index.php"/>
        </rule>
        <rule name="WordPress: https://domain.com/subdomainname" patternSyntax="Wildcard">
          <match url="*"/>
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
          </conditions>
          <action type="Rewrite" url="index.php"/>
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Все плагины были деактивированы, и проблема всё ещё существует, плюс я пробовал сменить темы на стандартную 2021, которая была единственной другой темой WP, установленной на сайте, и это не решило проблему.

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

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

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

  1. Проверьте настройки постоянных ссылок:

    • Перейдите в админке каждого подкаталога (например, example.com/subfolder/wp-admin).
    • В разделе "Настройки" -> "Постоянные ссылки" нажмите "Сохранить изменения", даже если не вносите никаких изменений. Это обновит правила перезаписи (rewrite rules).
  2. Проверьте конфигурацию .htaccess:

    • Убедитесь, что для каждого сайта в подкаталогах существует корректный файл .htaccess. Пример стандартного содержимого для WordPress:
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /subfolder/
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /subfolder/index.php [L]
      </IfModule>
      # END WordPress
    • Если у вас нет доступа к .htaccess, его необходимо создать.
  3. Проверьте конфигурацию web.config:

    • Так как вы используете Windows сервер, убедитесь, что настройка в web.config корректна. Приведённый вами пример выглядит неплохо, но убедитесь, что у вас нет конфликтующих правил. Попробуйте следующее содержимое:
      <configuration>
      <system.webServer>
       <rewrite>
         <rules>
           <rule name="WordPress" stopProcessing="true">
             <match url=".*" />
             <conditions logicalGrouping="MatchAll">
               <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
               <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
             </conditions>
             <action type="Rewrite" url="index.php" />
           </rule>
         </rules>
       </rewrite>
      </system.webServer>
      </configuration>
  4. Проверьте конфигурацию WooCommerce:

    • Убедитесь, что WooCommerce правильно настроен для каждого подкаталога. Убедитесь, что все страницы WooCommerce (магазин, корзина, оформление заказа и т. д.) существуют и имеют корректные постоянные ссылки.
  5. Проверьте наличие конфликтов:

    • Убедитесь, что все плагины и тема совместимы с вашей версией WordPress и не конфликтуют. Отключите все плагины снова и переключитесь на стандартную тему на время диагностики.
  6. Проверьте на предмет ошибок сервера:

    • Просмотрите журналы ошибок сервера. Это может помочь вам понять, почему возникают проблемы с загрузкой страниц и настройкой WooCommerce.
  7. Настройка WooCommerce:

    • Если возникли проблемы с настройкой WooCommerce после переактивации, попробуйте удалить плагин, заново установить его и пройти через настройку заново.
  8. Проверка сервера:

    • Убедитесь, что ваш новый сервер поддерживает необходимые версии PHP, MySQL и модули для работы с WordPress и WooCommerce.

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

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

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