Назад | Перейти на главную страницу

Нежелательное перенаправление 301 для нового VirtualHost для поддомена

За последние 3 года у меня было 2 копии моего сайта Wordpress. Один на www.domain.com и один на dev.domain.com. Пытаюсь добавить сегодня третью. Вроде достаточно просто! Я выполняю все простые шаги по настройке, и как только я включаю сайт, он 301 направляет меня на сайт www. Я не знаю, как устранить причину срабатывания 301. Это где-то в Apache или Wordpress? Все, что я знаю, это то, что я копирую всю конфигурацию для сайта разработчиков и меняю имена поддоменов и каталогов, где это возможно. Похоже, этого должно быть достаточно. Мои шаги:

  1. Откройте dev2.domain.com в браузере и посмотрите страницу Apache2 по умолчанию.
  2. Скопируйте исходную папку для /dev.domain.com -> /dev2.domain.com
  3. Скопируйте /etc/apache2/sites-available/dev.domain.com.conf -> dev2.domain.com.conf
  4. Выполнить: sudo a2ensite dev2.domain.com.conf
  5. Выполнить: sudo service apache2 reload (и / или перезапустить - я пробовал оба)
  6. Откройте dev2.domain.com и получите 301 перенаправление на www.domain.com

Есть ли способ окончательно выяснить, что вызывает 301? Что больше всего сбивает с толку, так это то, что я создаю этот новый сайт на субдомене, копируя существующий сайт, работающий в субдомене. Я просто не могу понять, в чем разница между ними.

Обязательная информация о конфигурации ...

Идентичный .htaccess в корневом каталоге всех 3 сайтов (www, dev и dev2):

# 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
Options +Indexes
IndexOptions -FancyIndexing

конфигурация сайтов-доступных для dev.domain.com ...

<VirtualHost *:80>
    ServerName dev.domain.com
    ServerAdmin d@domain.com

    DocumentRoot /srv/dev.domain.com

    <Directory />
        Options All
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /srv/dev.domain.com/logs/error.log
    CustomLog /srv/dev.domain.com/logs/access.log combined
</VirtualHost>

конфигурация сайтов-доступных для dev2.domain.com ...

<VirtualHost *:80>
    ServerName dev2.domain.com
    ServerAdmin d@domain.com

    DocumentRoot /srv/dev2.domain.com

    <Directory />
        Options All
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /srv/dev2.domain.com/logs/error.log
    CustomLog /srv/dev2.domain.com/logs/access.log combined
</VirtualHost>

Конфигурация DNS в AWS Route53 ...

domain.com       A  12.34.567.89
dev.domain.com   A  12.34.567.89
dev2.domain.com  A  12.34.567.89
www.domain.com   CNAME  domain.com

Думаю, две вещи, на которых я больше всего зацикливаюсь:

  1. Конфигурация apache между dev и dev2 кажется быть идентичным, кроме изменения "dev" -> "dev2", где это применимо

  2. Когда сайт отключен в apache, он не перенаправляется. Перенаправление происходит только после того, как сайт включен. Значит ли это, что это Wordpress?

Все настройки вашего Apache точны; ваша проблема, скорее всего, является результатом сохранения домена в базе данных Wordpress. По умолчанию Wordpress сохраняет базовый URL-адрес в таблице wp_options как для домашней страницы, так и для URL-адреса сайта. Кроме того, он хранит полный домен во всех GUID отдельных сообщений / страниц в таблице wp_posts.

Варианты поиска и замены домена:

  • самый быстрый: экспортируйте базу данных mysql, откройте дамп базы данных mysql в текстовом редакторе и выполните глобальный поиск (для domain.com или dev.domain.com) и замените его на (dev2.domain.com), повторно импортируйте.
  • используйте sql-запрос для поиска и замены всех экземпляров старого домена новым поддоменом.

Дополнительные сведения о переносе сайта Wordpress из одного домена в другой см. В разделе «Изменение имени домена и URL-адресов» на странице Перемещение страницы Wordpress Codex