お客さんからの連絡があって、サイトのリンクがすべてトップページになってしまうということだった。
サイトを見てみると、すべてのリンクが/index.phpに遷移している。このサイトは、数年前にbaserCMSで作成している(メンテナンス契約はしていない)。baserCMSのスマートURLが全滅している。おそらく、rewriteの設定がおかしくなっているということではないかと予想する。
baserCMSのスマートURLの.htaccessにあるrewiteの設定の
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
の前にあるRewriteルールを一旦削除してみる。すると、正常にスマートURLが動いてリンクが有効になる。次に少しずつRewriteルールを削除しながら試してみる。すると以下の行だけを削除すると正常に動作することがわかった。
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://[ドメイン]/$1 [R=301,L]
この設定はさくらインターネットでhttpでアクセスされたときにhttpsに遷移するようにおまじないで入れたものである。どこから拾ってきてコピペしたような覚えがある。
このサイトでもWordPressでも同じ現象が発生すると報告がある。何でもさくらインターネットのサーバーがアップデートされたおかげで、この設定が悪さするという話しである。
WordPressで構築されているサイトが突然トップページしか表示されなくなってしまったという不具合の解決策は「.htaccess」の見直しから
ドモドモコーポレーション
やはり、意味もわからずコピペするのはダメなのである。
それにしても、さくらインターネットのサーバーがアップデートしたせいで(アップデートしておかげでサーバーが快適になったことのほうが大きいけど)、作ったこちらが悪いようで、調査して改修してもお金にならなかった。メンテナンス契約していないと、小さなシステム下請けではよくある話しである。最初からお金が出ないなら断ってしまうことのありだけど、仏心で話しを聞いて対応してしまうのは悪いことなのかな。
ひとり言
baserCMSは、自身のアップデートを管理画面からできるようにしてくれないかな。サイトのアップデートがめんどくさい。これだからWordPressをおすすめしてしまう。