bloginfo () e get_template_directory_uri () com SSL?

4

Eu tenho um tema Wordpress que estou tentando colocar em um site somente SSL. Não há versão não SSL do site.

O tema Wordpress usa várias funções como bloginfo('pingback_url') , bloginfo('template_directory') , get_template_directory_uri() , etc ... Todas as funções típicas de um tema.

Todas essas funções geram http links, não https , portanto, nenhum deles é carregado, pois não existe uma versão não SSL do site.

Como eu forço o Wordpress a usar https para TUDO?

    
por Jake Wilson 17.01.2013 / 00:48

2 respostas

2

tente instalar este plugin do WordPress. enlace mas leia as instruções de instalação, pois tem algumas coisas extras para fazer depois de ativar o plugin.

    
por WP Themes 17.01.2013 / 16:28
2

Se o seu site estiver em um serviço de balanceamento de carga que lida com SSL, talvez o seu servidor não receba nada na variável de servidor $_SERVER['HTTPS'] e $_SERVER['SERVER_PORT'] seja 80 quando deveria ser 443 (veja este Resposta de estouro de pilha para detalhes).

Se este é o caso, e você não pode fazer com que seu host mude isso, então você pode precisar falsificá-lo e dizer ao PHP que ele é SSL de qualquer maneira. Defina os URLs da sua casa e do site para usar https, para que todos os URLs gerados pelo WordPress sejam exibidos como URLs https. Em seguida, solte este código em um plugin ( aqui está um ready-made , coloque-o na sua pasta de plugins e ative-o):

// if site is set to run on SSL, then force-enable SSL detection!
if (stripos(get_option('siteurl'), 'https://') === 0) {
    $_SERVER['HTTPS'] = 'on';
}

NB: isso pode se voltar contra você, porque você provavelmente tem código (em plugins ou em seu próprio código) que verifica se a página foi carregada via SSL e redireciona se não for. Seu servidor não poderá testar isso agora! Assim, você também deve adicionar algum JavaScript à sua página para que haja algum nível de garantia de que suas páginas seguras serão carregadas via SSL (isso também é feito pelo plug-in pronto):

<script>
if (document.location.protocol != "https:") {
    document.location = document.URL.replace(/^http:/i, "https:");
}
</script>

NB: isso não é infalível! No entanto, ele deve capturar a maioria das situações, com exceção de alguém que desabilita o JavaScript e, em seguida, edita o URL para forçá-lo de volta a http. Se eles fizerem isso, talvez mereçam ter suas credenciais de cartão de crédito vendidas para a Elbonia.

    
por webaware 01.02.2013 / 04:20

Tags