С кодом 200 - это не редирект.
Редирект обычно с кодом 301, 302.
При "перманентном" редиректе сначала у Вас страница отдает код 301 и указывает новый адрес. А потом уже новая страница открывается и, если все нормально, то отдает код 200.
Вот пример, как
http://site.ru/что_угодно и
http://www.site.ru/что_угодно перенаправить с кодом 301 на
https://www.site.ru/что_угодно
Для
https://site.ru делается аналогично. (Прописывается конфиг в отдельном блоке "server".)
server {
listen 100.100.100.100:80;
server_name site.ru www.site.ru;
location / {
rewrite ^(.*)$ https://www.site.ru$1 permanent;
}
}
Если Вам не нужно сохранять путь после домена при редиректе, то можно воспользоваться еще более короткой конструкцией
location / {
return 301 https://www.site.ru;
}
Я не понимаю, зачем Вам 307 редирект. И тем более не понимаю, зачем делать двойной редирект 307=>301=> итп. В этом нет никакого смысла, в том числе SEO. И если кто-то так сделал, в том числе и крупный ресурс, то это не означает, что нужно это копировать. Двойной редирект только увеличивает время отклика страницы.
В целях SEO используется 301 редирект. Поисковики отлично с ним работают и "склеивают" адреса.
Ниже описание 307 редиректа из википедии. Для Вашего примера такой редирект разве нужен?
307 Temporary Redirect — запрашиваемый ресурс на короткое время доступен по другому URI, указанный в поле Location заголовка. Метод запроса (GET/POST) менять не разрешается. Например, POST запрос должен быть отправлен по новому URI тем же методом POST. Этот код был введён вместе с 303 вместо 302-го для избежания неоднозначности. Введено в RFC 2616 (обновление HTTP/1.1).
Вы пишите:
Браузер запоминает, что используется https:// и в случае захода на сайте по незащищенному соединению, он осуществляет внутренний переход с кодом 307 на https://.
На самом деле браузер запоминает не это. Некоторые браузеры запоминают 301 редирект. Это означает, что если страница "A" ссылается на страницу "B" через 301 редирект, то при повторном наборе в браузере адреса "A", браузер сразу грузит адрес "B" без предварительного обращения к "A". То, что в Вашем примере "A" и "B" имеют один и тот же разный адрес, который отличается только протоколом http/https, - это лишь частный случай. Браузеры могли бы точно также запомнить редирект _http//site1.eu/page1 на _https//site2.biz/page2