Перенаправление Apache происходит только при вводе пароля

StackOverflow https://stackoverflow.com/questions/137679

  •  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 автоматически добавляет первоначально запрошенный запрос к заменителю, если только запрос замены не задан.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top