- 締切済み
Apacheのmod_rewriteに関してお
Apacheのmod_rewriteに関してお教えください。 お世話になります。 色々なサイトを参考に試していますが、思う様にいかず困っています。 知恵をお借り頂けたらと存じます。 ・「mod_rewrite」を利用したメンテナンス画面の表示。 ・「F5」等で更新した際、本来の画面が表示される様、内部的な置き換えのみとしたい。 ・使用しているWebサーバは(Apache2.2系) ・「mod_proxy_ajp」を利用したコネクタ連携を行っている。 ・ホスト名によるバーチャルホスト ・configファイルに記載する方法で試し中 ・メンテ用html メンテナンス用htmlは、別途指定した「DocumentRoot」に配備しており、 同ディレクトリにイメージファイル格納用フォルダがある。 そのフォルダ内にimgファイルが配備されている。(pngファイル等) DocumentRoot Lhtmlファイル L格納フォルダ\イメージファイル 現在、Apacheの機能に関して勉強中です。 メンテナンス用画面表示用として、例えば色々なサイトに有るような、以下記載をしたとします。 --------- RewriteCond %{REQUEST_FILENAME} !(/メンテナンス画面.html|.*\.(gif|jpe?g|png|js|css|ico))$ RewriteRule ^(.*)$ /メンテナンス画面.html [R=503,P,L] --------- 「http://ホストIP/」等でアクセスした場合、ドキュメントルートを参照、意図した動きとなるのですが、 「http://ホストIP/^ユーザディレクトリ/」や、「http://ホストIP/Aliasディレクトリ/」等 一階層深いURLだった場合、メンテ用htmlは、表示されるのですが、参照イメージファイルがパス違いにより 参照出来なくなり、意図した動きとなりません。 ※ 「http://ホストIP%{REQUEST_URI}」配下を参照しようとしている。(RewriteLogより) 「RewriteRule ^(.*)$」だと全てになってしまう為、ルールを分け設定してみましたが 第3引数の指定が悪いのか設定した「RewriteRule」を全て参照し「RewriteCond」が動いてしまう。 引数や正規表現の問題だとは考えておりますが、なかなか正解に辿り着けません。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- anmochi
- ベストアンサー率65% (1332/2045)
あらゆるものをメンテナンス画面に飛ばす時、メンテナンス画面での画像指定は絶対パスにするのが鉄則だ。 <img src="/格納フォルダ/イメージファイル.png /> これはrewriteうんぬんではなくって、ブラウザがどう画像を探しに行くかの話。 ~~~~~~~~ ところで、 RewriteCond %{REQUEST_FILENAME} !(/メンテナンス画面.html|.*\.(gif|jpe?g|png|js|css|ico))$ RewriteRule ^(.*)$ - [R=503,L] ErrorDocument 503 /メンテナンス画面.html の方がいいかも。
お礼
anmochi 様 情報頂きありがとうございます。 修正後、いくつか参照して確認してみました。 大丈夫そうです。ありがとうございます。 htmlファイル内の画像参照に関して、試した事はあったのですが (サーバ上の)フルパスのみでした。 確かに、他の画面を(練習で)作成した際、DocumentRoot(今回はRewriteBase?)を ルート(/)として指定する方法もした事がありました。 うっかりしていた様です。 > あらゆるものをメンテナンス画面に飛ばす時、メンテナンス画面での画像指定は絶対パスにするのが鉄則だ。 頭?に刻んでおきます。 > ところで、~~ この記載方法も試してはいました。(今現在は違っている) マニュアルを見つつ、お教え頂いた内容を参考に設定方法を見直そうと考えております。 ありがとうございます。助かりました。