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

index.htmlを省略してくるアクセスをリダイレクトしたい


お世話になっております。

ApacheのRedirect機能を持ちいて、
以下のように携帯キャリア毎に用意したindex.htmlファイルを外部サーバへと
リダイレクトすることを目論んでいます。

=======================================================================
Redirect permanent /i/index.html http://www.hoge.co.jp/hoge/index.html
=======================================================================

ところが、上記のように定義しても、http://www.example.jp/i/という風に、
index.htmlを省略してくるアクセスの場合、
http://www.hoge.co.jp/hoge/index.htmlにリダイレクトさせることができず、
200番の応答コードとともに、http://www.example.jp/i/index.htmlをApacheが返してしまっており
困っております。

http://www.example.jp/i/index.htmlと、
index.htmlを省略せずアクセスした場合には、
ちゃんと、301でhttp://www.hoge.co.jp/hoge/index.htmlへリダイレクトしてくれます。


また、同じApahceで必ずファイル名を省略せずにアクセスしてくるケースに対して、
たとえば、以下のように定義しているのですが、これも期待通りの動作となっております。

=======================================================================
Redirect permanent /i/xxxx.html http://www.hoge.co.jp/hoge/xxxx.html
=======================================================================


ファイル名(index.html)を省略してくるアクセスをリダイレクトしたい場合、
どのように定義すれば期待通りの動作が得られるでしょうか。


リダイレクトの仕方は、ApacheのRedirectにこだわっていませんので、
何か実現可能な方法がありましたらどなたか教えて頂けますと大変助かります。

よろしくお願いいたします。

A 回答 (2件)

以下のどちらかでいけると思うのですが、どうでしょう?



Redirect permanent /i http://www.example.co.jp/hoge

RedirectMatch permanent /i(/$|/index\.html$) http://www.example.co.jp/hoge/index.html

あと、URLとかドメインの例示の時は"example.co.jp" とか "example.com" などを使うことをお勧めします。

参考URL:http://httpd.apache.org/docs/2.2/mod/mod_alias.h …
    • good
    • 0
この回答へのお礼

Toshi0230様

回答ありがとうございます。

ご教示いただいた以下方法で対応しましたらうまくいきました!

#############################
RedirectMatch permanent /i(/$|/index\.html$) http://www.example.co.jp/hoge/index.html
#############################

私の認識ですと、
以下方法だとディレクトリ単位でのリダイレクトになると思っているのですが
それは間違いなのでしょうか?
#############################
Redirect permanent /i http://www.example.co.jp/hoge
#############################

この場合、/i/以下の全てのファイルがリダイレクト対象となってしまう。
⇒それは困ります。/i/以下のファイルのうちリダイレクトされては困るものが沢山ありますので。


で、ちなみになんですが、
こちらに質問した後、以下の方法で試してみたのですが、だめでした。

#############################
RewriteCond %{REQUEST_URI} ^/index.htm$
RewriteRule ^(.*)$ http://www.example.co.jp/hoge/index.html[R,L]
#############################

だめな状況は、リダイレクトせず、200番でindex.htmlを返してしまいました。

そこで思ったのですが、
このmod_rewiteの場合、「^/index.htm$」に問題がありそうですね。

Toshi0230さんが教えてくれたパターンマッチ「/i(/$|/index\.html$)」
にすればmod_rewiteでもいける気がしていますので試してみます。

お礼日時:2010/04/01 10:36

> 以下方法だとディレクトリ単位でのリダイレクトになると思っているのですが


> それは間違いなのでしょうか?

いえ、まちがっていません。その通りです。

mod_rewriteはよく覚えてないので今日のところは回答を差し控えます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2010/04/05 09:26

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