Как запретить установку 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.
Предполагая, что записи базы данных неверны.
- Войдите в phpMyAdmin или другой менеджер базы данных.
- Выберите базу данных WP.
- Зайдите в таблицу wp_options (префикс wp_ может отличаться).
- Ищите записи с опцией name = "siteurl" и "home".
- Отредактируйте эти записи, чтобы отразить ваше новое доменное имя.
Вот документация WordPress о том, как переключать схему URL сайтов.
Вероятно, ваша проблема связана с различными ссылками на БД в вашем проекте WP. Я столкнулся с этой проблемой при развертывании WP раньше. Вам нужно будет редактировать базу данных напрямую, чтобы исправить проблемы.
- Экспортируйте свою базу данных WordPress с помощью phpMyAdmin или SequelPro (то, что дает вам чистый файл.sql)
- Используйте текстовый редактор, такой как Sublime или Atom, найдите "www.example.com" и замените все на "blog.example.com", затем сохраните.
- Загрузите БД в папку prod, и вы увидите, что эти ошибки исчезли.
Это не должно происходить, если ваш виртуальный хост настроен правильно, но все же, поскольку ваши таблицы не созданы, поэтому вы можете сделать только одну попытку с этим шагом:
Вы можете добавить в свой файл wp-config.php следующий параметр
define('wp_site_domain', 'blog.example.com');
Это заставит WordPress следовать blog.example.com.