Перезапись HTTP на HTTPS не работает с первого раза

Я все, у меня странная проблема с перенаправлением на HTTPS в Debian под управлением Apache.

  • Когда пользователь посещает http://subdomain.url.nl для в первый раз выдается сообщение о том, что страница не найдена.
  • Когда пользователь посещает https, это работает.
  • Затем пользователь закрывает браузер, снова запускает браузер и переходит на http (без https), перенаправление внезапно работает.

Я использую это правило перезаписи. (* скрыть IP-адрес в этом сообщении)

  <VirtualHost 10.*.*.*:80>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
ReWriteRule ^/(.*) https://%{HTTP_POST}/$1 [NC,R,L]
</VirtualHost>

Итак, только «первый раз», когда пользователь посещает сайт по http, перенаправление не работает. Есть идеи, как решить эту проблему?

0
задан 8 March 2017 в 18:01
2 ответа

Переменной HTTP_POST не существует. Скорее всего, вы имели в виду HTTP_HOST:

RewriteEngine on
ReWriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]

Поскольку это постоянный редирект, код ответа 301 должен быть возвращен, то по умолчанию для [R] установлено значение 302 (Moved Temporarily).

Также обратите внимание, что проверка условия для порта, отличного от 443, не нужна, VirtualHost привязывается только к порту 80. Запросы на порт 443 никогда не дойдут до него.

Относительно рабочих вторых запросов: Включен ли HSTS в вашей конфигурации SSL? Это объясняет, почему клиенты сразу обращаются к HTTPS для последующих запросов

.
3
ответ дан 4 December 2019 в 11:44

Рекомендуется использовать опцию Redirect внутри виртуального узла, как объясняется здесь . Вот фрагмент конфигурации:

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName www.example.com
   Redirect permanent / https://secure.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName secure.example.com
   DocumentRoot /usr/local/apache2/htdocs
   SSLEngine On
# etc...
</VirtualHost>

Это перенаправит все запросы на http://www.example.com на https://secure.example.com.

.
1
ответ дан 4 December 2019 в 11:44

Теги

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