У меня есть следующий шаблон vHost:
<VirtualHost *:80>
ServerAdmin hostmaster@example.de
ServerName autodiscover.*.*
ServerAlias autoconfig.*.*
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>
Но мое RewriteRule неверно.
Например:
autoconfig.testdomain.de
сопоставляется с https://autoconfig.testdomain.de
Что я хочу:
autoconfig.*.*
сопоставляется с https://autoconfig.maindomain.de
autodiscover.*.*
сопоставляется с https://autodiscover.maindomain.de
Я хочу проанализировать только часть поддомена в %{HTTP_HOST}
к subdomain.example.de
, но только если часть поддомена либо autoconfig
или autodiscover
Вместо этого попробуйте следующее:
RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteRule ^/(.*) https://%1.maindomain.de/$1 [R=301,L]
Нет необходимости проверять %{HTTPS} !=on
поскольку вы находитесь в vHost для порта 80.
В RewriteCond
директива захватывает только субдомен из запрошенного имени хоста (которое может быть только autoconfig
или autodiscover
из указанной конфигурации vHost). Затем на это ссылаются с помощью %1
обратная ссылка в RewriteRule
замена строка.
Кроме того, вы можете явно проверить только autoconfig
или autodiscover
поддомены в условии:
RewriteCond %{HTTP_HOST} ^(autoconfig|autodiscover)\.
Перед тестированием вам необходимо очистить кеш браузера, поскольку ошибочные 301 (постоянные) перенаправления будут кешированы браузером. Протестируйте с 302 (временными) перенаправлениями, чтобы избежать проблем с кешированием.
ServerName autodiscover.*.*
Я думаю, у вас должна быть более старая версия Apache, поскольку вы не можете использовать подстановочные знаки в ServerName
директива в новых версиях Apache (в противном случае возникла бы двусмысленность, поскольку ServerName
используется для создания самореферентных URL-адресов в определенных сценариях). Вы должны только указать подстановочные знаки в ServerAlias
директива.
Это следует изменить на что-то вроде:
ServerName autodiscover.something.something
ServerAlias autodiscover.*.*
ServerAlias autoconfig.*.*