Перенаправление Apache происходит только при вводе пароля
-
02-07-2019 - |
Вопрос
Я настраиваю phpMyID на одной из своих машин и пытаюсь заставить apache перенаправлять на HTTPS только при отправке пароля.Я делаю это, поскольку моя первоначальная настройка перенаправления всего трафика OpenID не сработала, stackoverflow не нравится мой самозаверяющий сертификат.Это новое правило, которое я написал, но оно не работает:
RewriteRule http://%{SERVER_NAME}/openid/index.php(\?.+)$ https://%{SERVER_NAME}/openid/index.php$1
Решение
Вам нужно использовать Cond для проверки как порта (http или httpd), так и строки запроса:
RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule /openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
если включен .htaccess, вы должны использовать вместо этого
RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
Другие советы
Лучшим решением было бы:
RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^openid/index\.php$ https://%{SERVER_NAME}/openid/index.php
Объяснение: RewriteCond %{SERVER_PORT} 80
также соответствует портам, которые просто включают 80
.То же самое относится и к шаблону openid/index.php
(где “.
” также может быть любым персонажем).И добавление запроса не является необходимым, поскольку mod_rewrite автоматически добавляет первоначально запрошенный запрос к заменителю, если только запрос замены не задан.