MultiSiteをHTTPからHTTPSに変換するには何をする必要がありますか?


8

マルチサイトインスタンスの約100のサイトをHTTPSに変換するタスクを経験しました。

私は簡単にスクリプトを記述してDBをヒットし、siteurlとのhome値をHTTPSに変更できます。これにより、サイトはスクリプトと将来の埋め込み画像をHTTPSにエンキューします。

まあ、内部リンクのすべてのpost_contentだけでなく、HTTPを使用した画像も調べて、それらをHTTPSに変換する必要があります。

私はおそらくそれを行うために何かを一緒に泡立てることができましたが、私は他に何を変える必要があるのか​​疑問に思っています。GUIDは正しいですか?$ wpdbコマンドを使用した場合、後でDBを再シリアル化する必要がありますか?

私は最初に尋ねる必要があります、私のためにこれを処理する信頼できるプラグインはありますか?このプロセスについて他に何を知る必要がありますか?

注-私たちはすでにすべてのSSL証明書を持っているので、心配する必要はありません。-サーバーはlinux(redhat)とapacheを実行しています-マルチサイトはサブディレクトリを使用しています-他のことはあまり知りませんが、サーバーは私の管轄外です


マルチサイトはサブディレクトリまたはサブドメインを使用していますか?どのWebサーバー(Apache、nginxなど)を使用していますか?これは、購入するSSL証明書の種類に関係します。
Pat J

パットに感謝します。私はあなたが尋ねた情報で私の質問を編集しました。
rugbert 2015年

自動化された検索と置換に注意してください。データベースにシリアル化されたデータがある場合、文字列の長さも変更しない場合はに変更httpすることでデータが壊れhttpsます。
Steven

こんにちは@rugbert、この質問を解決できましたか?私の回答があなたの質問に役立ったかどうかを確認します。
イーサンジンクスオサリバン

回答:


1

クリーンな設定が必要な場合は、スクリプトを実行してすべてのURLとGUIDをhttpsに更新できます。

ただし、次のような代替案も検討してください。

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

バックエンドのwp-config.phpで:

define('FORCE_SSL_ADMIN', true);

フロントエンドのwp-config.phpで(またはdb UPDATEスクリプトを実行して):

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

次に、スクリプトを実行して、すべてのwp_postsコンテンツURLを更新できます。


0

このプロセスには、実際にはセキュリティ証明書を購入し、それをWebサイトのサーバーに適用することが含まれます。これにより、サーバーから提示された証明書を介して安全な接続にアクセスするすべてのユーザーが強制されます。これらの証明書はSSL証明書と呼ばれますhttp ://www.DigiCert.com/SSL-Certificates


ジョンに感謝します。すべてのSSL証明書があることを忘れていました。
rugbert 2015年

その場合は、証明書が適用され、すべてのサイトがDNSファイルに正しく再リストされていますか?オンサイトまたはサードパーティのどちらでホストしますか?サーバー環境とはどのOSですか?
John Lucey、2015年

ホスティングにサードパーティを使用しています。情報やサーバーへのアクセスが多すぎませんが、Apacheを実行しているRedhat Linuxサーバーです。私はDBに何をする必要があるかについてより確信しています
ラグバート'12

1
データベースに対して何もしなければならないことはないと思います。SSLはDBではなくサーバー側です。私のアドバイスは、証明書がサーバーに適用されていることを確認し、有効性をテストするためにURLでhttpsを使用して確認することです。サイトが表示された場合は、httpsなしで古いURLを入力するだけで、自動的にhttpsが表示されます。証明書をデプロイしてからしばらく経過しているので、残念ながら、これらの手順を実行できませんが、エンジニアは、URLサーバー側を修正するために、サーバーのDNSリダイレクトファイルだけでなく、それも処理できます。
John Lucey、2015年

0

このデータ変更を行う1つの可能な方法は、ターミナルでWP-CLIを使用することです。

まず最初に、何か問題が発生した場合に備えて、バックアップと確実な復元戦略があることを確認する必要があります。また、ライブデータベースのコピーを使用して、ローカルまたはテストシステムでこの手順をテストする必要があります。

基本的な手順は、ネットワークの各サイトを反復処理し、WP-CLIのsearch-replaceコマンドを使用して各サイトのURLを置き換えることです。

これがbashのワンライナーです:

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

それを調べてみましょう:

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

このコマンドは、内部のコマンドの出力の各行に対してループを開始し、$()各行を変数に書き込みます$SITE

$(wp site list --field=url)

これは、ネットワーク内のすべてのサイトURLのリストを提供するWP-CLI site listコマンドです。このコマンドを単独で実行すると、おそらく次のようになります。

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

...); do

内側のループ部分を開始するだけです。

内部ループコマンドはすべての魔法を実行します(\読みやすくするために使用して2行に分割しています)。

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

私たちはするWP-CLIを教えて検索するために$SITE(例えばhttps://your-site.tld/)と置き換える少し変更したバージョンでそれを:${SITE/http:/https:}。これは、その置き換えbashの文字列の置き換え操作であるhttp:https:。(したがって、変数を解決すると、コマンドはのようになりますwp search-replace "http://your-site.tdl/" "https://your-site.tld/")。

search-replaceドキュメントに記載されている多くの可能なオプションがあります。例では、これらを使用しました:

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

--dry-runそして、--verbose明確にコマンドをテストするために役立ちます。

--network 検索と置換操作をネットワークテーブルにも適用します。

--preciseSQLの代わりにPHPを使用して値を検索および置換するようにWP-CLIに指示します。これにより、シリアル化された値が破損しないようにします。

最後に、ループは

; done

もう一度強調しましょう。本番環境でこれを使い始める前に、これを深くテストしてください。それがどのように機能し、WP-CLIが何をするかを理解する必要があります。以前にWP-CLIを使用して、このような検索と置換操作を実行してマルチサイトを他のドメイン名に移行しましたが、からへの切り替えはhttpしていませんでしたhttps

いくつかのエッジケースがある可能性があります。WP-CLIは引き続きを読み取り、wp-config.phpの定数を使用してデータベースで一致する«network»を見つけようとしますwp-config.php。1つのサイト(データベース)を操作していて、他のサイト(の定数wp-config.php)を操作していない場合、問題が発生する可能性があります。しかし、あなたの場合のために、私はWPは、一般的に依存しているとして、それは問題ではないだろうと思いDOMAIN_CURRENT_SITEPATH_CURRENT_SITE、彼らはとにかく変更されません。しかし、もう一度、これを徹底的にテストします。

もう少しbashマジックを使用して、このループを5サイトまたは10サイトのチャンクに分割し、ステップごとに実行することもできます。


interconnectit.com/products/…でないのはなぜですか?
KnightHawk 16

あなたは間違った方向に質問します。正しいものは次のとおりです:なぜこのプラグインを使用する必要があるのですか?説明されているCLIアプローチと比較した場合の利点は何ですか?
David

0

すべてのWebサイトがでHTTPSを使用するようにするにはpost_content、次の2つのオプションのいずれかを実行できます。

1.バックエンド:SQLクエリを実行する

すべてのHTTPリンクがHTTPSとして設定されていることを確認するには、次の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_URLhttp://example.com(非HTTP)に置き換えられます
  • NEW_URLhttps://example.com(HTTPS)に置き換えられます

これはカバーするsiteurlhomeと新しいHTTPSへのウェブサイト上のすべてのコンテンツを。

2.フロントエンド:検索と置換プラグインを使用します

より使いやすいアプローチは、検索と置換プラグインを使用して、古いHTTPを含むすべてのテーブルを簡単に置き換え、それらをHTTPSに変更することです。プロセスは使いやすく、変更を適用する前に、影響を受けるテーブルと行をプレビューできます。

事前警告

変更を適用する前に、何か問題が発生した場合に備えて、常にデータベースのバックアップを作成することは言うまでもありません。


0

HTTPはデフォルトのプロトコルであり、ほとんどのWebサイトでWeb上の情報を処理するために使用されます。WebサイトはHTTPSで実行され、エラーメッセージは表示されません。これは、証明書が正しくインストールされていることを意味します。Webサイト全体をHTTPからHTTPSに移行する必要があります。

WordPressでHTTPをHTTPSに移行する方法を学ぶ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.