WordPressのメディアファイルを/wp-content/uploads/2023/03/hogehoge.pngから移動したいけれど
画像をワードプレスにアップロードすると、https://hogehoge.com/wp-content/uploads/2023/03/hogehoge.pngのような場所にアップロードされます。巷では、ワードプレスを使っているとバレたくない、や、URLを短くしたい、という理由で、https://hogehoge.com/img/hogehoge.pngアップロードするようにする、という方法がたくさん紹介されています。
私も月で別れてるなんて扱いにくい、ディレウクトリがこの先何十個も増えるのは気持ち悪いと思って、https://hogehoge.com/img/というディレクトリを作って、メディアファイルはすべて/img/直下にアップロードされるようにしていました。
その結果、ConoHa WINGからシン・レンタルサーバーに引っ越した時に、引っ越した先で画像が表示されず、大変な思いをしております。皆様には同じ道にハマって欲しくないので、これを書いております。
/wp-content/から動かすリスク
レンタルサーバーのWordPress簡単移行サービスが使えない
数年ブログ運営していると、サーバー会社の再編や、より安定したサーバーに乗り換えたり、より低価格のサーバーに乗り換えたくなったりして、レンタルサーバーを乗り換えたい、と思うことがあるはずです。
個人的なおすすめは速度と価格面でシン・レンタルサーバー、安定面ではエックスサーバーです。
エックスサーバーやシン・レンタルサーバーでの「WordPress簡単移行」では、/img/ディレクトリのファイルはコピーしてくれません。
他のレンタルサーバーの移行でも、同じように問題が出る可能性があります。くれぐれも、メディアのアップロード先は、/wp-content/からは移動しないようにしましょう。
絶対サーバーを変えない、とか、手作業のミスのリスクがあったり、引越しの際に1日かかることがあっても、絶対にhogehoge.com/img/がいい、という方も、hogehoge.com/img/でいいと思います。
ディレクトリ構造を変更するなら/wp-content/の中で
エックスサーバーやシン・レンタルサーバーの「WordPress簡単移行」を使うと、/wp-content/というディレクトリの中であれば自動でコピーしてくれますので、ディレクトリ構造を変更したい場合も、/wp-content/の配下でするようにします。
public_htmlのディレクトリ構造
WordPressでサイト作る際は、public_html配下のディレクトリは、下記のようになっています。
????public_html
└????wp-admin
└????wp-content
└????wp-includes
この中の/wp-content/から出ないようにすればエックスサーバーやシン・レンタルサーバーの標準のWordPress簡単移行で自動でコピーしてもらえます。
/wp-content/のディレクトリ構造
wp-contentのディレクトリ構造は下図のようになっています。
言語パックやプラグインのフォルダがあるここに数千の画像ファイルを直置きするのはまずそうですよね。
/uploads/のディレクトリ構造
/uploads/配下は、年>月のフォルダと、テーマであるcocoonのリソースが置いてあります。ここに/image/または/img/や/media/や/library/や/files/というディレクトリを置いて管理するのが深くなりすぎず、浅すぎず、簡単移行も使えるし、バランスがいいと思います。
私は、/wp-content/uploads/library/にしました。
/img/や/image/、/file/など悩みましたが、アップロードされるのはメディア全般で、画像だけではいので、/img/はやめておきました。
そして、WordPressの「メディア」メニューが「ライブラリ」と「新規追加」なので、ここからヒントをいただき、/wp-content/uploads/library/とすることにしました。
メディア格納場所の変更方法
メディア格納場所の変更方法は、自分のサイトの/wp-admin/options.phpにアクセスします。
https://hogehoge.com/wp-admin/options.php
upload_pathを検索します。アルファベット順にメニューが並んでいるのでかなり下の方です。
サーバーのセキュリティ設定でWAFを設定してると変更できません
WAFを設定していると、「閲覧できません」というエラー画面が表示され、options.phpの変更が保存できず、メディア格納場所の変更ができません。
ConoHa WINGのサーバーパネルをみると、SQLインジェクション攻撃と判断されていました。
WAFをオフにします。
WAFがオフであれば無事にメディア収納のディレクトリを変更することができました。
作業終了後は、忘れずにWAFをオンにしておきます。
メディアファイルを新規ディレクトリに移動
options.phpで変更後は、/library/ディレクトリが作成されます。
/library/に、メディアファイルを移動します。今回、3000個のファイルがありましたが、ConoHa WINGのファイルマネージャでは移動できませんでした。選択してドラッグ&ドロップすると、数分間待たされて、完了後に、ドロップ先のフォルダに何も移動していないという状況です。
FileZillaを使用すると、数分で、何の問題もなく移動できました。
WordPressの投稿記事の中のリンクは、自動で新しいディレクトリに書き変わっていました
元々hoge.com/img/hoge.pngという画像を指定していたところは、hoge.com/wp-content/uploads/library/hoge.pngと自動で書き換わっていました。
メディアファイルはあらかじめ新しく指定するディレクトリの中にコピーしておく
options.phpを修正する前に/img/内にある画像は、/wp-content/uploads/library/など新しいアップロード先のディレクトリにコピーしておきましょう。
コピーではなく、移動させようと思うと、移動にかかっている時間中、画像が表示されないダウンタイムが発生します。
コメント