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
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top