Перенаправление 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]

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

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

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

RewriteCond %{HTTPS} on
Другие вопросы по тегам