O que preciso fazer para converter meu MultiSite de HTTP em HTTPS?


8

Fui encarregado de converter cerca de 100 sites na minha instância multisite para HTTPS.

Posso escrever facilmente um script para acessar o banco de dados e alterar os valores siteurle homepara HTTPS, que por sua vez deve forçar o site a enfileirar scripts e futuras imagens incorporadas em HTTPS, certo?

Bem, também precisarei passar por todo o post_content para obter links internos, bem como imagens usando HTTP e convertê-los em HTTPS.

Eu provavelmente poderia chicotear alguma coisa para fazer isso, mas estou me perguntando o que mais preciso mudar. GUIDs, certo? Se eu usasse os comandos $ wpdb, seria necessário resserializar o banco de dados posteriormente?

Eu deveria ter perguntado primeiro, existe algum plugin confiável que cuide disso para mim? O que mais eu preciso saber sobre esse processo?

Notas - Já temos todos os certificados SSL, portanto é algo com o qual não preciso me preocupar. - O servidor está executando o linux (redhat) e o apache - O multisite está usando subdiretórios - Não sei muito mais, o servidor está fora da minha jurisdição


Seu multisite usa subdiretórios ou subdomínios? Qual servidor web (Apache, nginx, etc) você está usando? Isso terá alguma influência no tipo de certificado SSL que você está comprando.
Pat J

Obrigado Pat, editei minha pergunta com as informações que você pediu.
rugbert

Tenha cuidado com a localização e substituição automatizadas - se você tiver dados serializados no banco de dados, você os quebrará alterando httppara httpsse não alterar também o comprimento da string!
Steven

Oi @ rugbert, você conseguiu resolver esta questão? Apenas verificando se minha resposta foi útil para sua pergunta.
Ethan Jinks O'Sullivan

Respostas:


1

Você pode executar um script para atualizar todos os URLs e guias para https, se desejar uma configuração limpa.

Mas considere também alternativas como:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
</IfModule>

Em wp-config.php para o back-end:

define('FORCE_SSL_ADMIN', true);

Em wp-config.php para o front-end (ou execute um script db UPDATE):

define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');

Em seguida, você pode simplesmente executar um script para atualizar todos os URLs do conteúdo wp_posts.


0

Na verdade, esse processo envolve a compra de um certificado de segurança e a aplicação ao servidor para seus sites. Por sua vez, isso forçará todos os visitantes a uma conexão segura através do certificado apresentado pelo seu servidor. Esses certificados são chamados de certificados SSL: http://www.DigiCert.com/SSL-Certificates


Obrigado John, esqueci de mencionar que temos todos os certificados SSL.
rugbert

Ok, nesse caso, os certificados foram aplicados e todos os seus sites foram revistados corretamente nos arquivos DNS? Eu tenho que perguntar se você hospeda no local ou com terceiros? Qual sistema operacional é o ambiente do servidor?
John Lucey

Estamos usando terceiros para hospedar. Eu não tenho muita informação ou acesso ao servidor, mas é um servidor linux redhat executando o apache. Estou mais concerened sobre o que eu preciso para a DB
rugbert

1
Eu não acredito que nada precise ser feito no banco de dados. SSL é do lado do servidor, não DB. Meu conselho seria garantir que os Certs fossem aplicados ao servidor e verificar usando https em seu URL para testar a validade. Se o site aparecer, você poderá digitar apenas o URL antigo sem https e ele o trará automaticamente em https. Já faz um tempo desde que implantei um certificado tão triste que não posso ajudá-lo nessas etapas, mas seus engenheiros devem ser capazes de lidar com isso para você e o arquivo de redirecionamento de DNS no servidor para corrigir o lado do servidor de URL.
John Lucey

0

Uma maneira possível de fazer essa modificação de dados é usar o WP-CLI no terminal.

Antes de tudo, verifique se você tem um backup e uma sólida estratégia de restauração, caso algo dê errado. Você também deve testar este procedimento em um sistema local ou de teste com uma cópia do banco de dados ativo.

As etapas básicas são: iterar em cada site da sua rede e substituir os URLs de cada site usando o search-replacecomando do WP-CLI .

Aqui está uma linha de base do bash:

for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done

Vamos examinar isso:

for SITE in $(wp site list --field=url);

Aquele inicia um loop para cada linha da saída do comando dentro $()e grava cada linha na variável $SITE.

$(wp site list --field=url)

Esse é o site listcomando WP-CLI que fornece uma lista de todos os URLs do site na sua rede. Execute este comando apenas, você provavelmente verá algo como:

http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...

Agora

...); do

apenas iniciará a parte interna do loop.

O comando loop interno faz toda a mágica (eu o divido em duas linhas usando \para facilitar a leitura):

wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose

Nós dizemos WP-CLI para pesquisar para $SITE(por exemplo https://your-site.tld/) e substituí -lo com uma versão ligeiramente modificada: ${SITE/http:/https:}. Esta é uma cadeia de caracteres bash que substitui a operação que substitui http:por https:. (Então, resolvendo as variáveis, o comando seria semelhante wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

search-replacepossui muitas opções possíveis descritas na documentação . No exemplo, usei estes:

--dry-run --precise --network --verbose

--dry-rune --verbosesão claramente úteis para testar o comando.

--network aplica a operação de pesquisa e substituição também às guias da rede.

--precisediz ao WP-CLI para usar PHP em vez de SQL para pesquisar e substituir os valores. Isso garante que os valores serializados não sejam corrompidos.

Finalmente, o loop é fechado com

; done

Deixe-me enfatizar novamente: teste isso profundamente antes de começar a usá-lo na produção. Você deve entender como ele funciona e o que o WP-CLI faz. Eu usei o WP-CLI antes para executar essas pesquisas e substituir operações para migrar multisites para outros nomes de domínio, mas não para alternar de httppara https.

Pode haver alguns casos extremos: WP-CLI ainda lê o wp-config.phpe tentar encontrar uma correspondência «rede» na base de dados utilizando as constantes no wp-config.php. Se você estiver manipulando um site (o banco de dados), mas não o outro (as constantes wp-config.php), poderá ter problemas. Mas para o seu caso, eu acho que não vai ser um problema como WP normalmente se baseia em DOMAIN_CURRENT_SITEe PATH_CURRENT_SITEe eles não vão mudar de qualquer maneira. Mas, novamente, teste isso minuciosamente.

Com um pouco mais de magia do bash, você também pode dividir esse loop em pedaços de 5 ou 10 sites e passar por ele passo a passo.



Você faz a pergunta na direção errada. O correto seria: por que alguém deveria usar este plugin? Quais são os benefícios em comparação com a abordagem CLI descrita?
David

0

Para garantir que todos os seus sites usem HTTPS no seu post_content, você pode executar uma das duas opções:

1. Back-end: executa uma consulta SQL

Para garantir que todos os seus links HTTP estejam definidos como HTTPS, use a seguinte consulta SQL:

UPDATE wp_options SET option_value = replace(option_value, 'OLD_URL', 'NEW_URL') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'OLD_URL','NEW_URL');
UPDATE wp_posts SET post_content = replace(post_content, 'OLD_URL', 'NEW_URL');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'OLD_URL','NEW_URL');
  • OLD_URLserá substituído por http://example.com(não HTTP)
  • NEW_URLserá substituído por https://example.com(HTTPS)

Isto irá cobrir o siteurl, homee todo o seu conteúdo em seu site para o novo HTTPS.

2. Front-end: use o plug-in Search & Replace

Uma abordagem mais amigável é usar o plug-in Search & Replace para substituir facilmente todas as tabelas que contêm seu HTTP antigo e alterá-las para um HTTPS. O processo é fácil de usar e você pode visualizar quais tabelas e linhas serão afetadas antes de aplicar essas alterações.

Pré-aviso

Antes de aplicar qualquer alteração, acho desnecessário fazer sempre um backup do seu banco de dados, caso algo dê errado.


0

HTTP é um protocolo padrão, usado pela maioria dos sites para manipular as informações pela web. Seu site está sendo executado em HTTPS sem nenhuma mensagem de erro, significa que seu certificado foi instalado corretamente. Você deve migrar seu site inteiro de HTTP para HTTPS.

Aprenda a mover o HTTP para HTTPS para WordPress

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.