#apache #.htaccess #redirect #virtualhost
Вопрос:
Использование виртуальных хостов Ubuntu 16.04 и Apache.
У меня есть сайт на WordPress: www.example.com
Другие сайты обычно ссылаются на URL-адреса, такие как:
- sub1.example.com/page1
- sub2.example.com/page2
Я хочу перенаправить их на:
- example.com/page1
- example.com/page2
Я пытался:
RewriteCond %{HTTP_HOST} ^sub1.example.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
и
RewriteCond %{HTTP_HOST} ^sub1.example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
В обеих этих конфигурациях я получаю следующее поведение:
- sub1.example.com идет в example.com как и предполагалось
- sub1.example.com/page1 переходит на общую страницу Apache 404 «Запрошенный URL-адрес не найден на этом сервере». с помощью URL-адреса sub1.example.com/page1, это не перенаправление
Моя настройка DNS включает записи, указывающие на IP-адрес сервера для example.com, www, sub1 и т.д.
Мой файл virtual host .conf выглядит следующим образом:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html
ServerName example.com
ServerAlias www.example.com
<Directory /var/www/example.com/public_html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_dir.c>
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
</IfModule>
</VirtualHost>
Я попытался добавить sub1.example.com в качестве сервера и перезагрузки Apache безрезультатно.
Как я могу это решить?
Комментарии:
1. Правило, которое вы внедрили, в порядке, поэтому вы либо просматриваете кэшированные результаты (вы действительно позаботились об этом? Как?) или у вас где-то есть другие, дополнительные правила. Ведение журнала перезаписи позволит вам понять, что происходит внутри вашего механизма перезаписи на уровне деталей. Ознакомьтесь с документацией о том, как его включить.
2. @arkascha почти уверен, что он не кэширован, я использовал несколько различных инструментов анализа перенаправлений. Других правил быть не должно, я только что создал этот сайт. Я займусь ведением журнала перезаписи.
3. Ваши поддомены даже перенаправляются в тот каталог, в котором у вас есть файл .htaccess для начала? В показанной вами настройке хоста вы указали только
ServerName example.com
иServerAlias www.example.com
Ответ №1:
Я исправил проблему, создав отдельные виртуальные хосты для каждого поддомена, каждый со своей собственной структурой файлов и файлом .htaccess.