принудительный ssl для зарегистрированных пользователей

#mod-rewrite #ssl

#переписать мод #ssl

Вопрос:

У меня есть веб-приложение, для которого нам нужно принудительно использовать SSL, но только когда пользователь вошел в систему. К сожалению, страница входа в систему имеет тот же URL, что и веб-приложение, когда пользователь входит в систему.

У меня была следующая перезапись для пропуска SSL, когда URL был просто / или / регистрация, но это не удается, потому что а) когда пользователь входит в систему, он все еще может находиться в / и не иметь принудительного ssl и б) когда пользователь посещает регистрацию с помощью ключа приглашения, например signup?invite = 123abc, шаблон завершается с ошибкой.

 #RewriteCond %{HTTP_HOST} ^mysite.com$ [NC]
#RewriteCond %{SERVER_PORT} !^443
#RewriteCond %{REQUEST_URI} !^(/|signup)$
#RewriteRule (.*) https://mysite.com/$1 [R=301,L]
  

Такое ощущение, что принудительное использование SSL в apache происходит быстрее, чем в моем PHP-приложении, но я не уверен, что это лучший способ решить эту проблему.

Спасибо!

Ответ №1:

В зависимости от языка, который вы используете на стороне сервера, может быть проще сделать это таким образом, а не использовать правило перезаписи, поскольку ваша серверная программа будет знать, что пользователь вошел в систему. Некоторый псевдокод:

Если пользователь вошел в систему и URL запроса начинается с http, затем перенаправляется на https.

Комментарии:

1. Ах да, php. В этом случае разница в скорости будет минимальной, если вы не находитесь на сайте с очень интенсивным трафиком. Кроме того, если после подтверждения входа в систему или после самого входа вы будете выводить только URL-адреса https, вы в любом случае сократите количество перенаправлений.

2. Но я бы предположил, что перенаправление было бы намного быстрее, если бы выполнялось из Apache? Я могу пойти дальше и добавить это в код приложения, без проблем, это просто кажется менее эффективным.

3. Это может быть немного быстрее, но вам нужно будет добавить дополнительные биты для apache, чтобы подтвердить, что пользователь вошел в систему, что затем замедлит вашу работу.

4. Хорошо, тогда я просто пойду этим путем. Спасибо