Назад | Перейти на главную страницу

Перенаправление http на https с помощью htaccess не работает

# BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Приведенный выше код .htaccess не перенаправляет на HTTPS. Зачем?

(IfModule закомментирован специально, чтобы показать, что я не пропустил модуль перезаписи)

Обновить

Когда пытаешься с http://htaccess.madewithlove.be я получил

RewriteCond %{HTTPS} =on    This condition was not met
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]    This rule was not met because one of the conditions was not met
RewriteCond %{REQUEST_FILENAME} !-f This variable is not supported: %{REQUEST_FILENAME}
RewriteCond %{REQUEST_FILENAME} !-d This variable is not supported: %{REQUEST_FILENAME}

Мой htaccess fu в лучшем случае слабый, поэтому я не могу понять, как

RewriteEngine On

становится

RewriteCond %{HTTPS} =o

который комментируется

This condition was not met

или это

RewriteCond %{REQUEST_FILENAME} !-d 

получает комментарий

This variable is not supported: %{REQUEST_FILENAME}

Может я устал. Может я просто дурак.

TIA

Может я устал. Может я просто дурак.

Явно устал.

Я не помню вашу точную конфигурацию до редактирования, но на основе результатов проведенного вами теста:

RewriteCond %{HTTPS} =on    This condition was not met
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]    This rule was not met because one of the conditions was not met
RewriteCond %{REQUEST_FILENAME} !-f This variable is not supported: %{REQUEST_FILENAME}
RewriteCond %{REQUEST_FILENAME} !-d

похоже, у вас есть следующие правила и условия:

RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]

Если вы посмотрите на него после отдыха, становится ясно, что это не то, что вам нужно.

RewriteCond %{HTTPS} =on

Средство выполняет правило, если запрос httpS. Итак, вы хотите:

RewriteCond %{HTTPS} =off

С большой помощью Тестер htaccess, другой ответ на stackexchange, @ETL и @Michael Hampton я получил:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Любой из вас двоих может скопировать мой ответ, и я помечу его как один (первым пришел - первым подал) и удалю. Почитай тех, кто должен.

И чтобы уточнить - я был скорее глуп, чем устал. Подчеркнул, так как мой сайт не работал.

Что приводит меня к предостережение это может быть полезно знать. Есть какое-то странное кеширование на стороне клиента? это сделало тестирование стохастическим, мягко говоря. В настоящее время перенаправление работает в Safari @ OSX и Chromium @ Win, но не в IE11 @ Win. Для меня. Думаю, это исправится само к завтрашнему дню или когда я потрудюсь запустить другую машину.
Обновление: я играл больше. В офисе моего клиента http-> https на корневом уровне работал, но не для каждой статьи в IE, вместо этого он зависал. Но в Opera это было так. На следующий день IE тоже заработал. Дома мой IE сделал то же сальто, но на день быстрее. Оба зависли в каком-то состоянии ожидания.
Я пишу так много тарабарщины о неудачных загрузках, чтобы намекнуть следующему читателю, что цикл быстрого редактирования-сохранения-перезагрузки может не сработать, и держать под рукой> 1 браузер.