Apache Redirect только при вводе пароля

Я устанавливаю phpMyID на одном из моих компьютеров, и я пытаюсь заставить apache перенаправлять на HTTPS только при отправке пароля. Я делаю это, так как моя первоначальная настройка перенаправления всего трафика openid не работала stackru не нравится мой самозаверяющий сертификат. Это новое правило, которое я написал, но оно не работает:

RewriteRule http://%{SERVER_NAME}/openid/index.php(\?.+)$ https://%{SERVER_NAME}/openid/index.php$1

2 ответа

Решение

Вам нужно использовать 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

Explaination: RewriteCond %{SERVER_PORT} 80 также соответствует портам, которые просто включают 80, То же самое относится к шаблону openid/index.php (где ".Также может быть любой персонаж) И добавление запроса не является необходимым, поскольку mod_rewrite автоматически добавляет первоначально запрошенный запрос к замене, если только запрос замены не задан.

Другие вопросы по тегам