プロが教える店舗&オフィスのセキュリティ対策術

こんばんは。
かなり非常に分かりづらい内容なのですが以下のようなことは可能
でしょうか。

1. Apache で .htaccess の mod_rewrite を使用
2. ディレクトリに特定のファイルがある場合はすべてのリクエストを
 無視して強制的にそのファイルを表示する
3. そのファイルがない場合はリクエスト通りのページを表示する

例えば、 http://hogehoge/a.html をリクエストしたときにサーバ内に
b.html というファイルがあった場合は b.html を表示しますが、
ない場合はリクエスト通りの a.html を表示するというようなことを
したいのですが、何か方法はないでしょうか。

-f を使用するのではないかと思ったのですがよく分かりません。

質問しておいて、回答の確認を忘れる可能性がありますが、もし
よい方法を知っていましたら、教えていただけると嬉しいです。

A 回答 (1件)

こんなこともできるのですね。

勉強になりました。

RewriteEngine On
RewriteBase /
RewriteCond /var/www/html/b.html -f
RewriteRule !^b\.html$ b.html [R]

/var/www/html/b.html は b.html の絶対パスです。

この回答への補足

おー、やってみたところできました。
絶対パスでないとダメなんですね。
ありがとうございます。

ただ、他にもいろいろルール書いていたため当初はその部分が問題に
なり、無限ループする状態でした。
現在、以下のような感じに再度記述しているのですがもう少し簡略化
できないでしょうか。

# ここから
RewriteCond xxx ^xxxx$ [OR]
RewriteCond xxx ^xxxx$
# ここまでは同じルールにしたい
# 以下のルールだけ AND?
RewriteCond /var/www/html/b.html -f
RewriteRule !^b\.html$ b.html [L]

# これと上のルールを統合したい
RewriteCond xxx ^xxxx$ [OR]
RewriteCond xxx ^xxxx$
RewriteRule .* /xxx/ [R]

これまた分かりにくいかも知れませんができればよろしくお願い
します。
不可能であれば取り敢えず、このままで行くことにします。

補足日時:2008/02/23 23:04
    • good
    • 0
この回答へのお礼

この件はこれ以上待ってもこれ以上の回答は得られないようですし、
当初の目的自体は解決したので締め切らせていただきます。

t-okuraさん、ありがとうございました。

お礼日時:2008/03/15 23:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!