Вместо того, чтобы проверять имена хостов для перенаправления, вы можете просто проверить, что схема + имя хоста не является каноническим, а затем перенаправить на него. Итак, если запрос не для https://www.example.com/...
, то перенаправить (копировать URL-путь).
Например:
RewriteEngine On
RewriteCond %{HTTPS} =off [OR]
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule (.*) https://www.example.com/$1 [R=302,L]
Вышеуказанные состояния .. для всех запросов, где HTTPS равен off
или нет www.example.com
, затем перенаправьте на https://www.example.com/<URL-path>
. $1
- это обратная ссылка на подгруппу захвата в шаблоне RewriteRule
(ie. URL-путь). Любая строка запроса также копируется по умолчанию.
Префикс =
в CondPattern делает это точным совпадением строки, а не регулярным выражением. И префикс !
отменяет регулярное выражение (ie. Делает не совпадение).