Apa yang harus saya lakukan untuk mengonversi MultiSite dari HTTP ke HTTPS?

8

Saya telah ditugaskan untuk mengkonversi sekitar 100 situs dalam instance multisite saya ke HTTPS.

Saya dapat dengan mudah menulis skrip untuk menekan DB dan mengubah nilai siteurl- homenilai ke HTTPS, yang inturn harus memaksa situs untuk enqueue skrip dan gambar masa depan yang disematkan ke HTTPS kan?

Yah saya juga harus melalui semua post_content untuk tautan internal, serta gambar menggunakan HTTP dan mengonversinya menjadi HTTPS.

Saya mungkin bisa menyiapkan sesuatu untuk melakukan itu, tetapi saya bertanya-tanya apa lagi yang perlu saya ubah. GUID benar? Jika saya menggunakan perintah $ wpdb, apakah saya perlu melakukan reserialisasi DB sesudahnya?

Saya seharusnya bertanya dulu, apakah ada plugin yang andal yang akan menangani ini untuk saya? Apa lagi yang perlu saya ketahui tentang proses ini?

Catatan - Kami sudah memiliki semua sertifikat SSL, jadi itu sesuatu yang tidak perlu saya khawatirkan. - Server menjalankan linux (redhat) dan apache - Multisite menggunakan sub direktori - Saya tidak tahu banyak hal lain, server berada di luar yurisdiksi saya

rugbert
sumber
Apakah multisite Anda menggunakan subdirektori atau subdomain? Server web apa (Apache, nginx, dll) yang Anda gunakan? Itu akan berpengaruh pada jenis sertifikat SSL yang Anda beli.
Pat J
Terima kasih Pat, saya mengedit pertanyaan saya dengan informasi yang Anda tanyakan.
rugbert
Hati-hati dengan otomatis mencari dan mengganti - jika Anda telah serial data dalam database, Anda akan memecahkannya dengan mengubah httpke httpsjika Anda tidak mengubah panjang string juga!
Steven
Hai @ rugbert, apakah Anda bisa menyelesaikan pertanyaan ini? Hanya memeriksa apakah jawaban saya membantu pertanyaan Anda.
Ethan Jinks O'Sullivan

Jawaban:

1

Anda dapat menjalankan skrip untuk MEMPERBARUI semua url dan panduan ke https, jika Anda ingin penyiapan yang bersih.

Tetapi juga pertimbangkan alternatif seperti:

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

Di wp-config.php untuk backend:

define('FORCE_SSL_ADMIN', true);

Di wp-config.php untuk frontend (atau jalankan skrip UPDATE db):

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

Maka Anda bisa menjalankan skrip untuk MEMPERBARUI semua url konten wp_posts.

J
sumber
0

Proses ini sebenarnya melibatkan pembelian Sertifikat keamanan dan menerapkannya ke server Anda untuk situs web Anda. Ini pada gilirannya akan memaksa semua orang yang mengunjungi ke koneksi aman melalui sertifikat yang disajikan oleh server Anda. Sertifikat ini disebut Sertifikat SSL: http://www.DigiCert.com/SSL-Certificates

John Lucey
sumber
Terima kasih John, saya lupa menyebutkan bahwa kami memiliki semua sertifikat SSL.
rugbert
Oke dalam hal ini, apakah sertifikat telah diterapkan dan semua situs Anda dicatat kembali dengan benar dalam file DNS? Saya harus bertanya apakah Anda meng-host di tempat atau dengan pihak ketiga? Apa OS itu Lingkungan server?
John Lucey
Kami menggunakan pihak ketiga untuk menjadi tuan rumah. Saya tidak punya terlalu banyak info atau akses ke server, tetapi ini adalah server linux redhat yang menjalankan apache. Saya lebih sadar tentang apa yang perlu saya
sampaikan
1
Saya tidak percaya apa pun harus dilakukan ke database. SSL adalah sisi server bukan DB. Saran saya adalah memastikan bahwa Sertifikat telah diterapkan ke server dan memverifikasi dengan menggunakan https di url Anda untuk menguji validitas. Jika situs muncul, Anda harus bisa mengetik URL lama tanpa https dan secara otomatis akan membawa Anda dalam https. Sudah lama sejak saya telah menyebarkan sertifikat sehingga sayangnya saya tidak bisa membantu Anda melalui langkah-langkah itu tetapi insinyur Anda harus dapat menangani itu untuk Anda serta file pengalihan DNS di server untuk memperbaiki sisi server url.
John Lucey
0

Salah satu cara yang memungkinkan untuk melakukan modifikasi data ini adalah dengan menggunakan WP-CLI pada terminal.

Pertama-tama, Anda harus memastikan Anda memiliki cadangan dan strategi pemulihan yang solid jika terjadi kesalahan. Anda juga harus menguji prosedur ini di sistem lokal atau pengujian dengan salinan database langsung.

Langkah dasarnya adalah, untuk mengulangi setiap situs jaringan Anda dan mengganti URL setiap situs menggunakan search-replaceperintah WP-CLI .

Inilah bash one-liner:

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

Mari kita periksa:

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

Yang satu mulai loop untuk setiap baris output dari perintah di dalam $()dan menulis setiap baris dalam variabel $SITE.

$(wp site list --field=url)

Itulah WP-CLI site listperintah yang memberi Anda daftar semua URL situs dalam jaringan Anda. Jalankan perintah ini semata-mata, Anda mungkin akan melihat sesuatu seperti:

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

Sekarang

...); do

hanya akan memulai bagian loop dalam.

Perintah inner loop melakukan semua keajaiban (saya membaginya menjadi dua baris menggunakan \agar mudah dibaca):

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

Kami memberitahu WP-CLI untuk mencari untuk $SITE(misalnya https://your-site.tld/) dan menggantinya dengan versi yang sedikit dimodifikasi: ${SITE/http:/https:}. Ini adalah pesta Menggantikan tali operasi yang menggantikan http:dengan https:. (Jadi menyelesaikan variabel, perintahnya akan terlihat seperti wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

search-replacememiliki banyak opsi yang mungkin dijelaskan dalam dokumentasi . Dalam contoh saya menggunakan ini:

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

--dry-rundan --verbosejelas membantu untuk menguji perintah.

--network berlaku pencarian dan ganti operasi juga ke tabel jaringan.

--precisememberitahu WP-CLI untuk menggunakan PHP dan bukannya SQL untuk mencari dan mengganti nilai. Itu memastikan nilai serial untuk tidak rusak.

Akhirnya loop ditutup dengan

; done

Biarkan saya menekankan lagi: menguji ini sebelum Anda mulai menggunakan ini pada produksi. Anda harus memahami cara kerjanya dan apa yang dilakukan WP-CLI. Saya menggunakan WP-CLI sebelumnya untuk melakukan searach tersebut dan mengganti operasi untuk memigrasi multisite ke nama domain lain, tetapi tidak untuk beralih dari httpke https.

Mungkin ada beberapa kasus tepi: WP-CLI masih membaca wp-config.phpdan mencoba menemukan «jaringan» yang cocok dalam database dengan menggunakan konstanta di wp-config.php. Jika Anda memanipulasi satu situs (basis data) tetapi bukan yang lain (konstanta di wp-config.php) Anda mungkin mendapat masalah. Tetapi untuk kasus Anda, saya pikir itu tidak akan menjadi masalah karena WP biasanya mengandalkan DOMAIN_CURRENT_SITEdan PATH_CURRENT_SITEdan mereka tidak akan berubah pula. Tetapi sekali lagi, uji ini menyeluruh.

Dengan sedikit sihir bash, Anda juga dapat membagi lingkaran ini menjadi potongan-potongan 5 atau 10 situs dan melewatinya langkah demi langkah.

David
sumber
mengapa tidak melakukan interconnectit.com/products/… ?
KnightHawk
Anda mengajukan pertanyaan ke arah yang salah. Yang benar adalah: mengapa kita harus menggunakan plugin ini? Apa manfaatnya dibandingkan dengan pendekatan CLI yang dijelaskan?
David
0

Untuk memastikan semua situs web Anda menggunakan HTTPS di Anda post_content, Anda dapat melakukan salah satu dari dua opsi:

1. Backend: menjalankan query SQL

Untuk memastikan bahwa semua tautan HTTP Anda diatur sebagai HTTPS, gunakan kueri SQL berikut:

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_URLakan diganti dengan http://example.com(non-HTTP)
  • NEW_URLakan diganti dengan https://example.com(HTTPS)

Ini akan mencakup siteurl, homedan semua konten Anda di website Anda ke yang baru HTTPS.

2. Frontend: gunakan plugin Search & Replace

Pendekatan yang lebih ramah pengguna adalah dengan menggunakan plugin Search & Replace untuk dengan mudah mengganti semua tabel yang berisi HTTP lama Anda dan mengubahnya menjadi HTTPS. Prosesnya mudah digunakan dan Anda dapat melihat pratinjau tabel dan baris apa yang akan terpengaruh sebelum menerapkan perubahan itu.

Peringatan

Sebelum menerapkan perubahan apa pun, saya pikir tidak perlu dikatakan untuk selalu membuat cadangan dari database Anda jika terjadi kesalahan.

Ethan Jinks O'Sullivan
sumber
0

HTTP adalah protokol default, yang digunakan oleh sebagian besar situs web untuk menangani informasi melalui web. Situs web Anda berjalan pada HTTPS tanpa pesan kesalahan, artinya sertifikat Anda telah dipasang dengan benar. Anda harus memigrasi seluruh situs web Anda dari HTTP ke HTTPS.

Pelajari cara memindahkan HTTP ke HTTPS untuk WordPress

Harshita
sumber