Apache Redirect solo cuando se ingresa una contraseña
-
02-07-2019 - |
Pregunta
Configuré phpMyID en una de mis máquinas, y estoy tratando de hacer que apache redirija a HTTPS solo cuando se está enviando una contraseña. Estoy haciendo esto porque mi configuración original de redireccionar todo el tráfico de openid no funcionó. Stackoverflow no le gusta mi certificado autofirmado. Esta es la nueva regla que he escrito, pero no funciona:
RewriteRule http://%{SERVER_NAME}/openid/index.php(\?.+)$ https://%{SERVER_NAME}/openid/index.php$1
Solución
Debe usar una Cond para probar tanto el puerto (http o httpd) como la cadena de consulta:
RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule /openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
si en .htaccess debes usar en su lugar
RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
Otros consejos
Una mejor solución sería:
RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^openid/index\.php$ https://%{SERVER_NAME}/openid/index.php
Explicación: RewriteCond% {SERVER_PORT} 80
también coincide con los puertos que solo incluyen 80
. Lo mismo se aplica al patrón openid / index.php
(donde & # 8220; .
& # 8221; también puede tener cualquier carácter). Y no es necesario adjuntar la consulta ya que mod_rewrite agrega automáticamente la consulta solicitada originalmente al sustituto, a menos que se proporcione la consulta del sustituto.