Назад | Перейти на главную страницу

правила перезаписи apache для нескольких доменов | https: // www

У меня есть два приложения, настроенных на одном apache (например, example.com и test.net). Правила перезаписи для этих приложений одинаковы (поэтому в файле конфигурации для домена example.com у меня есть эти правила и те же правила в файле conf для домена test.net)

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}

И это почти нормально работает, за исключением одного случая - когда я запрашиваю в веб-браузере https://www.test.net.
In this only case apache redirets to https://www.test.net but displays content of https://www.example.com (not content of https://www.test.net as it should). Request www.test.net works ok. And https:// www.example.com also works ok.

А вот и вся конфигурация виртуального хоста для test.net (конфигурация для example.com аналогична):

<VirtualHost *:80>
    ServerName test.net

    DocumentRoot /var/www/test/web/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/test/web/>
        Options FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/test_error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/test_access.log combined

    RewriteEngine on  

    RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [L,R]

    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}


</VirtualHost>

И файл виртуального хоста для example.com

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

        DocumentRoot /var/www/example/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/example/>
                Options FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/example_error.log
        LogLevel warn   
        CustomLog ${APACHE_LOG_DIR}/example_access.log combined

        RewriteEngine on

        RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
        RewriteRule ^ https://%1%{REQUEST_URI} [L,R]

        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI}

</VirtualHost>

У меня также есть файл конфигурации для настроек ssl (например, сертификаты ssl), но нет правил перенаправления.

Как настроить правила перезаписи для этих двух приложений, чтобы они работали правильно?
Любые предложения очень ценятся! Пока не знаю, в чем моя ошибка.

Заранее спасибо,
С уважением!

Я думаю ты скучаешь ServerAlias www.test.com и ServerAlias www.example.com в ваших конфигурациях VirtualHost, и это вызывает у вас эти проблемы.