#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. Хорошо, тогда я просто пойду этим путем. Спасибо