LoginSignup
25
25

More than 5 years have passed since last update.

[WordPress] リライトルールが壊れたことを検知して自動復旧させる

Last updated at Posted at 2016-08-03

WordPress を使用していて、原因不明で個別記事が404になることありませんか?
たまにあるんですよね...その際はパーマリンク設定で何も変更せずに更新してやれば解決するんですが、夜中とかに発生した時に人手を介して対応するのは辛いので、自動的に検知してよしなにやってほしいですよね。

そんな時は wp-cli を使えばできます。
こんな感じのシェルスクリプトを cron で定期的に実行(5分に一度程度)しておけばいいんでないかな?

chk-wp-rewrite-rule.sh
#!/bin/bash
set -eux

# WordPress のインストールパス
wp_path='/path/to/wordpress'

# http ステータスコードを監視する記事ページのURL(削除されることのない記事のURLが良いです)
single_page_url='http://example.com/archives/1'

# http ステータスコードの取得
http_code=$(curl -Li ${single_page_url} -o /dev/null -w '%{http_code}' -s)

# http ステータスコードが 404 の場合、リライトルールとオブジェクトキャッシュの初期化
if [ "${http_code}" = "404" ]; then
    # 個別記事にアクセスできなくなって wp rewrite flush したことを slack なり、メールなりで通知したほうがいいかも
    wp --path=${wp_path} rewrite flush
    wp --path=${wp_path} cache flush
fi
25
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
25