Как запретить установку WordPress в поддомене "блог", перенаправляя на "www" при попытке завершить установку

У меня есть основной сайт http://www.example.com/, написанный на другом языке (Ruby/Rails). Я хочу, чтобы WordPress блог был установлен на http://blog.example.com/. У меня есть контроль над сервером и DNS.

Я создал необходимую запись CNAME для субдомена blog. Но после настройки apache и его перезапуска, когда я захожу на сайт http://blog.example.com/ для окончательных этапов установки, меня перенаправляют на http://www.example.com/wp-admin/install.php,

Также теперь, когда я пытаюсь посетить основной сайт http://www.example.com/, меня перенаправляют на вышеуказанную страницу установки WordPress.

Как сделать так, чтобы блог работал только по пути blog.example.com, а основной сайт должен быть доступен через http://www.example.com/.

Удаление поддомена www не вариант, так как это было некоторое время для основного сайта. Это может быть нормально, если каким-то образом можно настроить редирект с www на URL без www, хотя я не знаю, как его настроить.

Пожалуйста, предложите.

Вот apache conf основного сайта:

     <VirtualHost *:80>
ProxyPreserveHost On
ServerAdmin webmaster@localhost
ServerName http://www.example.com
ServerAlias example.com

DocumentRoot /home/apps/example/current/public
<Directory /home/apps/example/current/public>
AllowOverride all
Options -MultiViews
</Directory>
#RewriteEngine On
#Redirect / http://example.com/
</VirtualHost> 

Вот Apache Conf для WordPress под поддоменом "блог":

     <VirtualHost *:80>
ServerName blog.example.com
ServerAlias blog.example.com

ServerAdmin webmaster@localhost
DocumentRoot /home/apps/example_blog/wordpress_blog
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /home/apps/example_blog/wordpress_blog>
AllowOverride All
</Directory>

</VirtualHost> 

3 ответа

WordPress имеет доменные ссылки в базе данных и код, который отбросит ваши постоянные ссылки и вызовет плохие перенаправления. Эти изменнические URL-адреса должны отображаться как 404 на вашем корневом домене (example.com). Если нет, я бы дважды проверил корневой домен с удаленным поддоменом из vhosts.

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

Предполагая, что записи базы данных неверны.

  1. Войдите в phpMyAdmin или другой менеджер базы данных.
  2. Выберите базу данных WP.
  3. Зайдите в таблицу wp_options (префикс wp_ может отличаться).
  4. Ищите записи с опцией name = "siteurl" и "home".
  5. Отредактируйте эти записи, чтобы отразить ваше новое доменное имя.

Вот документация WordPress о том, как переключать схему URL сайтов.

Документ

Вероятно, ваша проблема связана с различными ссылками на БД в вашем проекте WP. Я столкнулся с этой проблемой при развертывании WP раньше. Вам нужно будет редактировать базу данных напрямую, чтобы исправить проблемы.

  1. Экспортируйте свою базу данных WordPress с помощью phpMyAdmin или SequelPro (то, что дает вам чистый файл.sql)
  2. Используйте текстовый редактор, такой как Sublime или Atom, найдите "www.example.com" и замените все на "blog.example.com", затем сохраните.
  3. Загрузите БД в папку prod, и вы увидите, что эти ошибки исчезли.

Это не должно происходить, если ваш виртуальный хост настроен правильно, но все же, поскольку ваши таблицы не созданы, поэтому вы можете сделать только одну попытку с этим шагом:

Вы можете добавить в свой файл wp-config.php следующий параметр

define('wp_site_domain', 'blog.example.com');

Это заставит WordPress следовать blog.example.com.

Другие вопросы по тегам