Apacheのhttpd.confの設定について質問です。

今したい事は以下になります。

http://test.ne.jp/ でアクセスが来たら http://test.ne.jp/hp/index.html にリダイレクト
http://test.ne.jp/aaahp/ でアクセスが来たら http://test.ne.jp/aaahp/ にリダイレクト

とりあえず、/でアクセスが来たら、http://test.ne.jp/hp/index.html に行くように下記の設定を試しましたが、
Redirect permanent / http://test.ne.jp/hp/index.html
これだと/aaahp/←この2つのスラッシュにも適応され、はちゃめちゃなURLになってしまいました。

今考えているのは、
/で来た場合、/にindex.htmlを保管するように設定し、
/apache2/htdocs/内にindex.htmlを設置、そのindex.html内で <META HTTP-EQUIV="Refresh"...略 を使いリダイレクトするという方法です。

ただ、この場合も、/で来た場合にindex.htmlを保管するという方法が分からないのでそれも調べています。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/11 12:31:28
  • 終了:2010/05/14 13:16:30

回答(3件)

id:Committeeman No.1

Committeeman回答回数153ベストアンサー獲得回数192010/05/11 12:57:23

ポイント60pt

http://httpd.apache.org/docs/2.0/ja/mod/mod_alias.html

処理の順番

様々なコンテキスト中での Alias や Redirect は他のディレクティブと同じように標準の マージ規則 に従って処理されます。ただし、(例えば <VirtualHost> セクションの中のように) 複数の Alias や Redirect が同じコンテキスト中に現れた場合は決まった順番で処理されます。

まず、Alias の前にすべての Redirect が処理されます。ですから、Redirect か RedirectMatch にマッチするリクエストには Alias は決して適用されません。次に、Alias と Redirect が設定ファイル中の順番に適用され、最初にマッチしたものが優先されます。

ですから、二つ以上のディレクティブが同じパスに適用されるときは、すべてのディレクティブの効果を得るためにはより詳しいパスを先に書く必要があります。例えば、次の設定は期待通りの動作をします:

Redirect /aaahp http://test.ne.jp/aaahp/ 
Redirect permanent / http://test.ne.jp/hp/index.html

引っ越したという返事を加える必要がある場合のみ permanent をつけておくので実際には引越しをしていないaaahpにはつけていない

id:pikab1

なるほど、AliasとRedirectの優先順位など勉強になりました。

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

2010/05/14 13:14:59
id:rx7 No.2

Y.Namikawa / id:rx7回答回数38ベストアンサー獲得回数92010/05/11 17:25:20

ポイント100pt

2つ目の/aaahp/の部分は、リダイレクトせずそのままのように見受けられるので、

1つ目の条件のみを満たす場合は、


RedirectMatch ^/$ http://test.ne.jp/hp/index.html


こんな感じでしょうか。"/"だけがついているアドレスのみ適用されます。

id:pikab1

回答頂いた内容で解決致しました。

ありがとうございます。

2010/05/14 13:11:58
id:studiocherry No.3

studiocherry回答回数269ベストアンサー獲得回数952010/05/11 21:30:58

ポイント70pt

httpd.conf で、設定してもいいのであれば、mod_rewrite の方が、柔軟性がありそうですね。


http://test.ne.jp/ -> http://test.ne.jp/hp/index.html

(test.ne.jp って存在しているので、 例示用の example.jp を使いますね。)

上記だと httpd.conf に

RewriteRule ^/ /hp/index.html [L]

だけで、大丈夫ですね。

^ は、先頭という意味です。

[L] は、一致したら これ以上 URLを書き換えしないというフラグです。


詳しくは、マニュアルを...

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

id:pikab1

とりあえず、

RewriteRule ^/ /hp/index.html [L]

このままではうまくいきませんでした。

mod_rewriteをもっと勉強してみます。ありがとうございました。

2010/05/14 13:13:51

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません