
За последние 3 года у меня было 2 копии моего сайта Wordpress. Одна на www.domain.com и одна на dev.domain.com. Я пытаюсь добавить третью сегодня. Кажется, все достаточно просто! Я прохожу все простые шаги настройки, и как только я включаю сайт, он 301 направляет меня на сайт www. Я не знаю, как устранить неполадки, вызывающие 301. Это где-то в Apache или в Wordpress? Все, что я знаю, это то, что я копирую всю конфигурацию для сайта dev и меняю имена поддоменов и каталогов, где это применимо. Кажется, этого должно быть достаточно. Мои действия:
- Откройте dev2.domain.com в браузере и увидите страницу Apache2 по умолчанию.
- Копировать исходную папку для /dev.domain.com -> /dev2.domain.com
- Копировать /etc/apache2/sites-available/dev.domain.com.conf -> dev2.domain.com.conf
- Выполните: sudo a2ensite dev2.domain.com.conf
- Выполните: sudo service apache2 reload (и/или restart — я пробовал оба варианта)
- Откройте 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 [email protected]
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 [email protected]
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
Думаю, больше всего меня зацепили две вещи:
Конфигурация Apache между dev и dev2казатьсябыть идентичными, за исключением замены "dev" на "dev2" везде, где это применимо
Когда сайт отключен в apache, он не перенаправляется. Перенаправление происходит только после включения сайта. Означает ли это, что это Wordpress?
решение1
Все ваши настройки 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