Search Regexのエラーとログインエラー

投稿日: カテゴリー: WordPress

WordPressのルートディレクトリ直下への変更は順調に終わったと思ったが、その後しばらくしてWordpressより「WordPress がプラグイン Search Regex でエラーを捉えました。」とメールが届く。取り敢えずWordpressにログインしようとすると、今度は「Cookiesがブロックされているか、…Cookieを有効化する必要があります」というエラーが出た。

変更直後まではログインもできていたし、怪しい挙動もなかったので焦ったが、結論から言うと、Search Regexでエラーとログインエラーは別々の問題だった。

まずはプラグインのSearch Regexから対応。少し調べてみると、Search Regexは3年くらいアップデートもないプラグインで、今回のような「エラータイプ E_ERROR が…/wp-content/plugins/search-regex/view/results.php ファイルの 26 行目で発生しました。」というエラーが発生することがあるらしい。対応としてはSearch Regexのviewフォルダ下のresult.phpの26行目を<?php /*?>と<?php */?>で挟んでコメントアウトすること。念のため、このプラグインは今後使う予定もないので停止した。

次にログインエラーについて。正しく解釈出来ているか怪しいが、SSL化した後など、サイトのURLが変更になった場合などに、このようなエラーが発生することがあるらしい。まずは指示通りCookieを有効化?することだが、結局何が必要だったか分からないのでやったことを列挙する

  • 閲覧履歴、Cookie、キャッシュの全削除
  • ログイン情報とパスワードが保存されていたので削除
  • Cookieデータの保存と読み取りを許可するを一旦「ブロック」して再度「許可」する

以上を何回か繰り返し試したが、効果なし。大分悩んだが、ログイン画面のURLがhttps://aaa.bbb.com/wp-login.phpになっていたので、今回変更したサイトアドレスに合わせてURLをhttps://www.aaa.bbb.com/wp-longin.phpにしたらログイン出来た。

当たり前なのかもしれないが、WordPressで設定したURLを、httpかhttpsか、wwwの有無など、ログイン画面のURLにも忠実に反映させることが肝要だったようだ。結局Cookieの削除等の作業が必要だったか分からなかったが、エラー出た場合の対処としては、まずログイン画面URLの確認して、問題無いようならCookieの削除(有効化?)してみるのが良さそう。

WordPressインストールの場所をルートディレクトリ直下に変更

投稿日: カテゴリー: WordPress

久しぶりにブログを更新するにあたり、古くなったテーマの変更やSSL対応をしようとして、変更作業中に色々と躓くことが多かった。その中でも、「Wordpressアドレス」と「サイトアドレス」が異なることで生じる不具合で色々面倒くさいことになっていた。

気が付かないだけで他にもあるかもしれないが、悩んでる問題は、

  • テーマのカスタマイズで「Non-existent changeset UUID」とエラーが出てプレビューが表示されない
  • 特定のプラグインで「.htaccessの書き込み権限がありません」と表示され実行できない
  • ページの公開状態を「パスワード保護」にしたとき、パスワードを入力してもページ閲覧出来ない場合がある

上2つは不便だけど一時的にサイトアドレスを同じに変更して対応できるが、3つ目は特定の第三者に閲覧してもらうためのページで、その場しのぎもできない。それほど事例が多いわけでもなかったので個別対応していた。

丁度いい機会だったのにWordpressをルートディレクトリ直下にインストールし、Wordpressとサイトアドレスを同じにして、問題解決することにした。

WordPressアドレス http://aaa.bbb.com/wp1

サイトアドレス http://www.aaa.bbb.com

これ↑ を ↓となるようにする

WordPressアドレス、サイトアドレス https://www.aaa.bbb.com

ついでにssl対応したのでhttpsになっている。ちなみに、wwwの有り無しの違いだけでも不具合出るので、Wordpressアドレスとサイトアドレスのurlは完全に一致させる必要がある。

以下手順。詳細は詳しいサイトが多くあるので、ここでは今回行った作業を列挙する。

  1. ftpにてサブディレクトリにインストールされたWordpressのファイルをすべてバックアップする。ついでにルートディレクトリ直下にある.htaccessとindex.phpもバックアップ。
  2. .htaccessとindex.phpはルートディレクトリ直下とサブディレクトリのどちらを使うかは、それまでの個々のカスタマイズで変わってくると思うが、サブディレクトリの記述がある方のファイルを使う時は修正が必要。.htaccessなら「RewriteRule . /wp1/index.php [L]」の「/wp1」削除して「RewriteRule . /index.php [L]」と修正。index.phpは「require(‘./wp1/wp-blog-header.php’);」の「/wp1」を削除して「require(‘./wp-blog-header.php’);」と修正する必要がある。
  3. ftpにてサブディレクトリをまるごと削除、バックアップしたWordpressのファイルと修正済み.htaccessとindex.phpをルートディレクトリ直下にコピー。
  4. WordPressにログイン出来なくなったので、データベースMySQLにログインして、wp_options内のoption_name:siteurlがoption_value:http://aaa.bbb.com/wp1となっているので、「https://www.aaa.bbb.com」に編集修正。
  5. ログイン出来るようになったので、Wordpressにログインする。ログイン画面urlが「http://aaa.bbb.com/wp1/wp-login.php」から「https://www.aaa.bbb.com/wp-login.php」とサブディレクトリの/wp1がなくなるので注意。
  6. 念のため、「設定」-「パーマリンク設定」で特に変更しなくても「変更を保存」する。
  7. WordPressアドレスが変更されたことにより、サイト内のアップロード画像等が表示されなくなってたりするため、サイト内urlを一括変更する。使用したプラグインは「Search Regex」。変更は固定ページと投稿ページだけで充分なので、置換範囲は「Post content」。置換内容は短すぎると余計なものまで変更されてしまうかもしれないので、「http://aaa.bbb.com/wp1」から「https://www.aaa.bbb.com」とした。一括置換はやはり怖いので、「Replace」で置換結果を確認してから「Replace&Save」で一括置換して保存。

以上で作業完了だが、4はファイル削除前にWordpressの設定からWordpressアドレスを修正後のurlに変更しておけば必要なかったかも。

ドメイン直下にWordpressをインストールすることは、デメリットもあるようなのだが、自分の利用スタイルでは特に問題ないと判断した。まあ、自力で解決できる熟練者だったらディレクトリ変更以外のやり方もあったかもしれないが、Wordpress初級者の自分には今回の変更で十分すっきりした。