htaccess перенаправляют для non-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.

15
задан Don 3 August 2013 в 23:53
поделиться

2 ответа

Попробуйте это правило:

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вот объяснение:

  1. Первое условие проверяет, имеет ли поле заголовка HTTP Host требуемый формат (содержит ровно один период).
  2. Второе условие проверяет, имеет ли конкатенированное значение переменной HTTPS (значения на и off). и s (таким образом, либо на , либо за ) равны на и фиксируют s. Это означает, что если %{HTTPS}s вычисляется как ons, то первая соответствующая группа является s и пуста в противном случае.
  3. Правило будет соответствовать всем запросам, так как каждая строка имеет начало (помечено знаком ^) и перенаправляет их на вычисленное значение http%1://www.%{HTTP_HOST}%{REQUEST_URI}, если оба условия верны. Если %1 является первой соответствующей группой предыдущего условия (s, если HTTPS и пустой в противном случае), %{HTTP_HOST} является HTTP Host запроса и %{REQUEST_URI} является абсолютным URL-адресом, который был запрошен.
35
ответ дан 1 December 2019 в 01:17
поделиться

Попробуйте добавить это RewriteCond к вашему файлу .htaccess, чтобы поймать только SSL - тогда сделайте то же самое для стандартного http.

RewriteCond %{HTTPS} on
2
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: