カテゴリー
コンピューター

対応レスポンスコードがApache バージョンによって違うがために、Webサイトメンテナンス画面を出すための .htaccess でハマったのを解決♪

こちらを参考に、サイトのどのページにアクセスされても、メンテナンスページを表示するよう .htaccess ファイルを編集しておりましたけれども、ハマってしまいました。

解決いたしましたのでメモです♪

  • mod_rewrite の R フラグのレスポンスコード指定を削除した。
  • つまり、[R=503,L] → [R,L] でエラー解消した♪
  • [R=503,L] のときは URL は同じで置換されなかったが、[R,L] のときは URL がメンテナンスページの URL へと書き換わった
  • Apache のバージョンが 2.0.64 の環境で起きた。参考ページのバージョンは2.2。これが原因!

対応レスポンスコードは Apache 2.0 なら 300 〜 400 が指定可能で、Apache 2.2 以降はすべてが指定可能

原因を探るべくドキュメントをあさりましたら、確かにございました!ポイントは次です。

カテゴリー
コンピューター

EC-CUBE で全ページ HTTPS にするのに mod_rewrite を使いました★YA★TTA★!

Apache の mod_rewrite を使用するので EC-CUBE でなくとも WordPress などのサイトでも SSL に統一することができる設定方法

eccube/html/.htaccess の末尾に次を追加します。

# HTTPS に統一
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
  1. RewriteEngine On → mod_rewrite を使えるようにする
  2. RewriteCond %{HTTPS} off → 条件式に相当。HTTPS がオフだったら次を実行
  3. RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] → 実行する内容。
    「^(.*)$」を「https://%{HTTP_HOST}%{REQUEST_URI}」に置き換える。
    ^ 行頭、. 任意の一文字、* 直前の文字の 0 回以上の繰り返し、$ 行末。
    [R,L] はリダイレクトした後、変換処理をここで終了する、という意味らしい。。。

ドキュメントは次です。日本語ですけれども(ヤッター)、Apache 1.3 のドキュメントと古いです。新しいバージョンのものももちろんございますけれども、英語でニュービーには辛いですの><。

そもそもなぜ HTTPS に統一しようと思ったかと申しますと、、、