Necesito agregar un parámetro a la URL si se accede a la URL en https y solo si el parámetro aún no existe (no necesito verificar el valor del parámetro).
Ejemplo 1: no se debe hacer nada porque se está accediendo a la url en http
URL original: http://ejemplo.com
URL final: http://ejemplo.com
Ejemplo 2: Apache necesita redirigir a https://example.com?parameterName=parameterValue
URL original: https://ejemplo.com
URL final: https://example.com?parameterName=parameterValue
Ejemplo 3: No se debe hacer nada porque la url está en https y contiene el parámetro "parameterName" (este es para evitar bucles infinitos)
URL original: https://example.com?parameterName=parameterValue
URL final: https://example.com?parameterName=parameterValue
Lo que he probado hasta ahora:
RewriteEngine On RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} !^parameterName$ [NC] RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}%parameterName=parameterValue
Edición 1: si elimino la condición "RewriteCond %{HTTPS} on", parece que la regla se está ejecutando. Los parámetros no se agregan correctamente, pero al menos se ejecuta la regla.
Ahora necesito entender por qué la regla no se ejecuta cuando está en HTTPS.
Buscando en Google un poco, encontré algunas publicaciones que decían que AllowOverride debe cambiarse a AllowOverride All.
Actualicé la siguiente línea en mi archivo httpd-conf pero el comportamiento no cambió:
De: AllowOverride Ninguno
Para Permitir Anular todo
El siguiente código hizo lo que necesitaba:
RewriteCond %{HTTPS} on RewriteCond %{QUERY_STRING} !.*parameterName.* RewriteRule /myapplicationpath?(.*) /myapplicationpath?parameterName=parameterValue&%{QUERY_STRING} [R]