O que você está tentando fazer é muito difícil de acertar. Se você cometer um erro ao usar o http e usar https, poderá abrir vários problemas de segurança.
Minha recomendação seria configurar um http vserver no apache, que redireciona para o mesmo URL https e não faz mais nada. Não precisa nem descobrir se o URL existe ou não, ele apenas redireciona o tempo todo. Em seguida, tem outro vserver https, que tem o conteúdo real do site.
Lembre-se de marcar todos os cookies como seguros, para que você não vaze cookies em conexões http.
Se você insistir em responder pelo http para os usuários, que não estão conectados. Então você precisará de um cookie inseguro, que informa se o usuário está logado ou não. Não coloque nenhum dado nesse cookie, apenas armazene se o usuário estiver logado ou não. Você poderia usar 0 ou 1 como o valor armazenado. Ou você poderia usar um valor constante, em cujo caso a existência do cookie significa que o usuário está logado e ausência significa que o usuário não está logado.
No lado do http, você redireciona para https se um desses dois critérios for satisfeito. Existe um cookie indicando que o usuário está logado ou o URI da solicitação requer login. Quando a requisição https for recebida, você terá que fazer verificações adicionais para validar se o usuário está realmente logado. Para isso você usa um cookie seguro, que não pode ser adivinhado por alguém de fora. Se o usuário não estiver logado, você redirecionará de volta para http, se o URL não exigir login e, nesse estágio, instruirá o navegador a excluir o cookie inseguro, que indicava incorretamente que o usuário estava logado.
É muito importante garantir que esses redirecionamentos não sejam armazenados em cache. Você não quer absolutamente que um navegador armazene em cache ambos os redirecionamentos da versão http de um URL para a versão https e vice-versa.