Перенаправление всех URL — адресов поддоменов на соответствующие URL-адреса основного домена-перенаправление с неработающими путями страниц

#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.