技術

サイト内の広告が異常

全てのサイトを見ているわけではないがIT関に従事して仕事関連のサイトや、個人の趣味のゲームなどのサイトを中心に見ているとだんだん広告の枠が増えてきてよもやスマートデバイスではどこが広告で何を見て良いのかわからないサイトも増えてきています。

iPhoneで以下のサイトなどのように上にも下にも場合によってはフローティングで広告が出てきて何を読んでいるのかわからなくなるようなサイトが増えてきている気がします。広告収入が必要なのはわかりますがこの記事でもとりあげているように広告ブロックの機能などと相まってそろそろ新しいスタイルの形式が出てくる必要がありそうです(これまで見た中で、本来の記事が三行くらいしか読めないサイトにも出会ったことがある)

また子供達などが見るには有害であろうサイトも表示されており(正直、そういったサイトが見えること自体は良いと思うのだが家族で見ているサイトがそういう広告でうまるという、昭和の時代にふと回したチャンネルでその手の下ネタが披露されていて気まずくなるのと同じ現象が産まれている)単に広告ブロックだけではなく合わせて有害サイト防止も含めて対策が必要になってきている状況かと思います(また子供達の端末だけに限って言えば、学校の支給の端末は千差万別で色々完全に防ぐのは難しいですね)

広告関連のブロックとして、家には、DNSサーバとして pi-hole を導入しておりDHCPで取得した場合には強制的にDNSサーバに向くように設定しています。ただこれらもモバイル通信で家のネットワークを迂回した場合には利用ができなくなるので、TailSacle経由でモバイル通信の際にも家のDNSを参照できるように設定をしています。

まぁ大体は私が使っているのだが家族が利用しているトラフィックも含まれているのだが世の広告がいかに多いかが窺い知れる。

WordPressの特定のURLがIPアドレスでのアクセスになっている場合

症状
テーマファイルの幾つかで https://IPアドレス/xxx とアクセスを行ってしまい、結果的にブラウザ側でセキュリティに問題があるサイトと認識されてNot foundになってしまいテーマが崩れる事象が発生していました。(ブラウザの、開発ツールなどでアクセスすると確認できます)

原因
get_template_directory_uri ()関数を利用して、テーマファイルがCSSを読み込んでいる場所があったのですがこの場合に、IPアドレスを含むURIが返却されてしまっていました。

対処
Mysqlのデータベースを確認すると 以下のようになっていたのでこちらの値をUpdateコマンドで更新します。(IPはダミーです)

mysql> SELECT option_name, option_value FROM tblog_wp_options WHERE option_name = 'siteurl' OR option_name = 'home';
+-------------+------------------------+
| option_name | option_value |
+-------------+------------------------+
| home | https://roguer.info |
| siteurl | https://111.111.111.111 |
+-------------+------------------------+
mysql> UPDATE tblog_wp_options SET option_value = 'https://roguer.info' WHERE option_name = 'siteurl';

これで無事にNot foundにならずに正しくスタイルが表示されるようになりました。何度も引っ越しをしているとだんだんゴミが溜まってしまってこのような状態になったもよう。ちなみに wp-config.php 側では正しく指定している状態でした(DBが優先されるのですね)

nginx のアップロードサイズ制限の変更(client intended to send too large body)

画像をアップロードしようとしたら「返答が正しいJSONレスポンスではありません」というエラーが表示されました。ログを見てみると client intended to send too large body: というエラーが nginxで表示されてました。

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;
    server_name localhost;
    root /usr/share/nginx/html;
    index index.php index.html;
    client_max_body_size 10M;
(略)

nginxの設定で初期は1Mになっているのでこの部分を変更しておきます。(PHP側でもサイズのUpload制限があるので変更をしておきますがNginx側でも必要なことをすぐに忘れてしまいます)

WordPressの「サイトヘルス」に従って改善をしてみる

重い腰をあげてこのサイトのメンテナンスを先日からしています。Wordpressの中でも色々と改善すべき項目が出ていますので対応をしていきたいと思います。

GA4
世の中はすでにGA4ですね。Google anaryticsのサイトに行きGA4用のタグを入れておきます。Pi-Holeでtagmanager切っているので動くのかわからんけど。

停止中のプラグインを削除してください
最近停止したものあるのでこちらも削除しておきます。これ以外にも何に使っていたのかわからんプラグインが30個も入っているので停止したいのですがテーマとかで使っているものも有り不用意に削除できない。
停止中のテーマを削除してください
ディフォルトのテーマ含めて利用してないものを削除

1つ以上の推奨モジュールが存在しません
imagickとか諸々、先日Updateした際に更新してなかったことが影響ですね sudo ln -s /etc/php/7.4//mods-available/imagick.ini 20-imagick.ini などでリンクを貼っておきます(が有効にならない・・あとで確認)

永続オブジェクトキャッシュを使用してください
こういうものが利用できるようになっているのですね。RadisとMemcacheが推奨されているようですがWordpressのディフォルト機能なのかプラグインで対応しろという話なのかどちらなんでしょうね?いずれにしてもお金もCPUリソースもかかるので今回はおいておきます。時間がある時にGCPのサービスを利用して構成してみたいと思います

HTTPS化
だいたいこういったものはハマるなと思いましたがハマりました。wp-adminに接続ができなくなりました。そもそもCloudflarでHTTPSにしているので一旦は良いかなと放置しておりましたがそろそろ真面目に設定変更をしないといけないかもしれません。サイトヘルスに表示されている画面からHTTPS化のようなリンクをクリックしたところ wp-configがリダイレクトループに陥ってしまったので強引に以下の設定を wp-config.php に入れて戻します。

define('FORCE_SSL_ADMIN', false);
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] )
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'http' )
{
$_SERVER['HTTPS']='off';
}
define('FS_METHOD', 'direct');
define('WP_SITEURL','http://roguer.info' );
define('WP_HOME','http://roguer.info' );
define('RELOCATE', true );

標準の機能が何を変更したのか分からぬが、内部的にはhttpsになっているようで投稿する際などもhttpsで繋がないと「新に失敗しました。 現在オフラインのようです。」が出てきます。これは httpのサイトから投稿が httpsで行われてしまうことから来るエラーですなので一旦接続自体は https(CloudFlaerの機能)で行うようにしておきます。(後で Lets Encriptなどを設定して動くようにしておきたいと思います・・)

結局あまり改善されてないのですが問題があることはわかりました。おいおい修正を

WordPressの新エディタにて画像のを貼り付けると「JSONレスポンス」エラーとなり貼り付けが出来ない

久しぶりにエディタを使おうとしたら、Gutenberg(グーテンベルク)エディタという今どきな感じのWebエディタに変更されていました。最近はもう慣れてきましたね。画像を貼り付けに対応しているはずなのですが実際に貼り付けると以下のような「返答が正しいJSONレスポンスではありません」と表示されてしまします。

この状況ですが、画像をライブラリからアップする際には問題なく表示されますので何かしらPOSTの問題が発生していました。

結論

  • 「post-views」プラグインが問題を起こしており、無効にすることで解消ができました。

メモ

  • このエラーはネットでググっても原因がいろいろ書かれています。実際に原因を特定するにはまずは素の状態で利用するのが一番ですので一旦すべてのプラグインを無効にしてみましょう。
  • プラグインが何もない状態でも問題が起こっている場合には、システムの問題であるかの生があります。その場合にはPHPのDebugログを有効にする。ブラウザの開発者モードで通信を見る、またもしかしたら動いている環境のネットワーク設定の問題かもしれません。何れにしてもまずは素の状態のWordpressに戻してから判断するということです。

上部へスクロール