У меня есть два приложения, настроенных на одном 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.
<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>
<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, и это вызывает у вас эти проблемы.