Я хотел бы иметь:
http://example.com
перенаправление к: http://www.example.com
https://example.com
перенаправление к: https://www.example.com
И что-либо, что является http://whatever.example.com
НЕ добавляют www как http://www.whatever.example.com
.
Попробуйте это правило:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Вот объяснение:
на
и off
). и s
(таким образом, либо на
, либо за
) равны на
и фиксируют s
. Это означает, что если %{HTTPS}s
вычисляется как ons
, то первая соответствующая группа является s
и пуста в противном случае. ^
) и перенаправляет их на вычисленное значение http%1://www.%{HTTP_HOST}%{REQUEST_URI}
, если оба условия верны. Если %1
является первой соответствующей группой предыдущего условия (s
, если HTTPS и пустой в противном случае), %{HTTP_HOST}
является HTTP Host запроса и %{REQUEST_URI}
является абсолютным URL-адресом, который был запрошен. Попробуйте добавить это RewriteCond
к вашему файлу .htaccess, чтобы поймать только SSL - тогда сделайте то же самое для стандартного http.
RewriteCond %{HTTPS} on