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