🙀

【エンジニア・コーダー向け】レンタルサーバー別ハマりポイントと解決策まとめ

に公開

はじめに

コーダー・エンジニアの方ならきっと誰もが経験したことのある、

  • ローカル環境では問題ないのに、本番サーバー環境でだけCSSが当たらない
  • テスト環境サーバーは大丈夫だったのに、本番サーバーでContact Form 7でメールが飛ばない

上記のように、サーバー側の問題なのに、コード側を修正し続けて全然治らないからめっちゃ時間溶けてしまった経験から、

  • 各サーバー別の「ハマりポイント」(落とし穴ポイント)
  • その解決策

をChatGPT君と一緒に調べてまとめたので、
コード側は絶対に問題ないのになんでレンタルサーバー環境でだけ反映しないんだ!!
というときにこの記事を読んでお役立てください。

本記事の対象読者

  • WordPressサイトを構築・運用している開発者
  • CSSが反映されない・フォームが動かないなど、「コードは正しいのに動かない・崩れている」現象にハマったことがある方
  • 複数サーバーを使い分けていて、それぞれのクセを押さえたい方
  • フリーランスでクライアントごとに運用サーバーが違う方

サーバー別ポイント

Xserver

ハマりポイント

  • Xアクセラレータ(キャッシュ)
    CSS/JSがキャッシュされていて、更新後も古いファイルが配信されることがある
  • WAF(Web Application Firewall)
    Contact Form 7やAPIリクエストが意図せずブロックされ、403エラーになる場合がある

解決策

  1. キャッシュクリア
    管理画面 → サーバー管理 → キャッシュ機能 → 「Xアクセラレータ設定」を無効化 or クリア
  2. WAFを一時OFF
    管理画面 → セキュリティ → WAF設定 をオフにし、動作確認後に再度オン

自分のポートフォリオサイトをXserverでキャッシュしていて、久しぶりにCSSを編集すると反映しなかったことがありましたが、スーパーリロードでも大抵解決できる印象。

ConoHa WING

ハマりポイント

  • WEXAL®高速化(超長期キャッシュ)
    CSS/JSを最適化&長期キャッシュし、シークレットモードでも古い資産が返ってくることがある
    ブラウザのシークレットモードでもCSS効いてないとかなら大抵これ
  • WAF強度が高い
    Ajaxリクエストや外部ライブラリの読み込みで弾かれるケースがある

解決策

  1. 開発中はWEXALをオフ
    管理画面 → サイト管理 → サイト設定 → 高速化 → WEXAL設定 を「OFF」にして、公開後にONに戻す
  2. キャッシュクリア
    同じ画面の「キャッシュクリア」ボタンで手動クリア
  3. クエリパラメータ強制付与
     $version = filemtime( get_stylesheet_directory() . '/(子テーマのCSSファイル名.css)' );
     wp_enqueue_style(
       '(子テーマ用スタイルハンドル)',
       sprintf(
         '%s/(子テーマのCSSファイル名.css)?v=%s',
         get_stylesheet_directory_uri(),
         $version
       ),
       array( '(親テーマのスタイルハンドル)' ), // 必要に応じて依存ハンドルを列挙
       null
     );
    

所感: WEXAL/キャッシュガチガチ, サイト速度めっちゃ速い
今回私はこのWEXAL設定がONになっていて強いサーバーキャッシュが効いていたためにどれだけブラウザ側でスーパーリロード等をしてもCSSが反映されない事象になってハマりました。
参考にしたサイト: https://saruwakakun.com/html-css/wordpress/conoha-wing#step6

さくらのレンタルサーバ

ハマりポイント

  1. メール送信制限が厳しい
    Contact Form7を使用するとメールが届かない

さくらインターネットのレンタルサーバーでは通常のサーバーとは異なる独自のメール処理が行われるため、メール送信がうまくいかない場合があります。私もこれでハマりました。

解決策

Flamingoプラグインを使用してフォーム送信テストをする
Flamingoプラグインをインストールした上でフォームの送信テストをする
→フォーム送信されてFlamingoの履歴に残る→フォームはOK,メールだけ飛んでない→サーバーの問題の可能性が高い
→そもそもフォーム送信されない→コンタクトフォームの問題の可能性

さくらインターネットのレンタルサーバーでメールを送信するには以下設定が必要

  1. サーバーコントロールパネルにログイン
  2. メール機能利用時のドメイン設定画面を開く
  3. メールの利用範囲を「利用しない」に設定する

引用元:https://blastengine.jp/blog_content/contact-form-7/

私はこの記事のおかげで助かりました。ありがとうございます。

SMTP認証を利用
プラグイン「WP Mail SMTP」等でさくら指定のSMTPサーバーを設定

さいごに

いつも通りコードを書いたり設定していてもなんかうまくいかない、動かない場合、割とサーバー側に原因がある可能性があるので、早めにサーバー側の設定や、WordPressのプラグインを確認した方が良いなと思いました。

今回私自身の操作したことある主要サーバーで実際にハマった点のみまとめたのでまだ操作したことのないその他サーバーについては記載しておりません。
もし記載している情報間違っている等あれば優しく教えていただけると幸いです。

Discussion