問題ID : 9284 Apacheの基本的な設定
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID : 9284 Apacheの基本的な設定
msg# 1
hidaruma12
投稿数: 96
Redirectディレクティブの書式について質問なのですがこちら書式は下記の通りとなっているのですが
Redirect [ステータス] URL-path URL
これのURL-pathというのは古いアドレスのDocumentRootからのパスと記載があるのですが「/」を指定するということはルートディレクトリを指定しているということであっていますか?
また下記回答の場合でもあっているでしょうか?
Redirect permanent http://www.test.com/ http://www.example.com/
Redirect [ステータス] URL-path URL
これのURL-pathというのは古いアドレスのDocumentRootからのパスと記載があるのですが「/」を指定するということはルートディレクトリを指定しているということであっていますか?
また下記回答の場合でもあっているでしょうか?
Redirect permanent http://www.test.com/ http://www.example.com/
Re: 問題ID : 9284 Apacheの基本的な設定
msg# 1.1
quensan
投稿数: 119
> これのURL-pathというのは古いアドレスのDocumentRootからのパスと記載があるのですが「/」を指定するということはルートディレクトリを指定しているということであっていますか?
解説の通りDocumentRoot(/var/www/html とか)からのパスを「/」から書き始める書式というだけで、ファイルシステムのルートディレクトリとは関係ないと思いますよ。
> また下記回答の場合でもあっているでしょうか?
> Redirect permanent http://www.test.com/ http://www.example.com/
興味あったので試してみました。
設定ファイルに書いてApache再起動してもエラーは出ないけど、動作しませんでした。書式通りじゃないとダメみたいです。
解説の通りDocumentRoot(/var/www/html とか)からのパスを「/」から書き始める書式というだけで、ファイルシステムのルートディレクトリとは関係ないと思いますよ。
> また下記回答の場合でもあっているでしょうか?
> Redirect permanent http://www.test.com/ http://www.example.com/
興味あったので試してみました。
設定ファイルに書いてApache再起動してもエラーは出ないけど、動作しませんでした。書式通りじゃないとダメみたいです。
Re: 問題ID : 9284 Apacheの基本的な設定
msg# 1.2
hidaruma12
投稿数: 96
回答いただきありがとうございます。
Redirectについて実際にためしていただきありがとうございます!
また、URL-pathのDocumentRootのパスというのがあまりイメージできていないのですがこちらはどこの直かに書くかということでよろしかったのでしょうか?
今回の問題ですとドキュメントルートから指定したいのでドキュメントルートの意味をもつ「/」を指定しているということであっていますか?
またその場合は下記のようにすれば動作するということでしょうか?
Redirect permanent http:// www.example.com/
Redirectについて実際にためしていただきありがとうございます!
また、URL-pathのDocumentRootのパスというのがあまりイメージできていないのですがこちらはどこの直かに書くかということでよろしかったのでしょうか?
今回の問題ですとドキュメントルートから指定したいのでドキュメントルートの意味をもつ「/」を指定しているということであっていますか?
またその場合は下記のようにすれば動作するということでしょうか?
Redirect permanent http:// www.example.com/
Re: 問題ID : 9284 Apacheの基本的な設定
msg# 1.3
quensan
投稿数: 119
DocumentRootは問題ID:9257を参考になさってください。
> またその場合は下記のようにすれば動作するということでしょうか?
> Redirect permanent http:// www.example.com/
この書式だと再起動時にエラーが出ました。
動作するのは問題ID:9284の正解の書式です。
> またその場合は下記のようにすれば動作するということでしょうか?
> Redirect permanent http:// www.example.com/
この書式だと再起動時にエラーが出ました。
動作するのは問題ID:9284の正解の書式です。
Re: 問題ID : 9284 Apacheの基本的な設定
msg# 1.4
hidaruma12
投稿数: 96
度々すみません。。。
ドキュメントルートがどのようなものかは理解できたのですが、今回の問題でURL-pathとして指定されている「/」は結局何を差しているのか理解できていません。。。
ドキュメントルートがどのようなものかは理解できたのですが、今回の問題でURL-pathとして指定されている「/」は結局何を差しているのか理解できていません。。。
Re: 問題ID : 9284 Apacheの基本的な設定
msg# 1.4.1
arashi1977
居住地: 広島
投稿数: 1715
横からお邪魔します。
Redirect ディレクティブってコンテキスト(設定が有効な範囲)としては「サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess」となかなか範囲広いですが、最上位の「サーバ設定ファイル」から考えたら「このHTTP(Web)サーバにアクセスした」時点で評価されるものと理解できます。
で、「このHTTPサーバにアクセス」ってどういうことかって考えると、例えばPing-tの場合なら「 https://ping-t.com 」へアクセスした時のことだと言えますよね。(ここはおそらく同意いただけると思います)
ではここにアクセスしたときに見えるものって何かって言うと、DocumentRootディレクティブで設定したパスなんですよね。設定としては
ってかけば、「 http://Webサーバアドレス/ 」へのアクセスに対して「/usr/web」の中身が返されるって設定です。(Index周りの話もありますがそこは省略)
ここまでの理解に問題なければ、次の話は簡単です。
HTTPに関するURLの書式って基本的にはこうなんですよね。(詳しくは https://ja.wikipedia.org/wiki/Uniform_Resource_Locator なんか見ると良いです)
スキームでSSLを使うかどうか、ホスト名でアクセス先のサーバアドレスを指定しています。その後ろの「パス(Path)」がここでhidaruma12さんが疑問に思われている「URL-path」のことです。
例えば、このスレッドのURLは「https://ping-t.com/modules/forum/index.php?topic_id=5184 」なので、
スキーム:https
ホスト名:ping-t.com
パス:/modules/forum/index.php
クエリ文字列:topic_id=5184
となります。
と言うことで、「URL-pathとは、URLのパス部」を指しているものになります。で、ここが「/」の場合は「このWebサーバのDocumentRootへアクセスしたい場合に指定するパス」を意味しています。
なので設問の
引用:をもう少し読み解くと、
・www.test.com ホストのURL-pathである「/」へのHTTPアクセスを(www.test.com ホスト上の設定によって)
・http://www.example.com/ にアクセスし直させる(Redirectさせる)
・返すHTTPステータスはpermanent(301:Moved Permanently)
・(記載はないが、リダイレクト先はLocationヘッダで指定され、そこにRedirectディレクティブの書式の最後の設定内容=http://www.example.com/ が含まれる)
となります。
すこーし掘り下げると、この問題の考え方としてはHTTPプロトコル的に考えた方が素直です。
・アクセスしてきたURLとは「Webサーバが指定するものではなくクライアントが指定したもの」です。
・サーバは「URLを解析し、どう処理するか」を判断し、その後の動作を決めます。
・例えばVirtualHostを使って1台の物理サーバ上で5サイトが稼働している場合、URLの「ホスト名」によってどのバーチャルホストへのアクセスかを判断し、「パス(URL-path)」によってそのバーチャルホストのDocumentRoot配下のどのファイルのデータを返すかを決定します。
・ただし、「パス=DocumentRootで指定したディレクトリ配下のパスと必ずしも1対1で対応するわけではなく、Webアプリケーションサーバなどでは「URL-pathとプログラムの処理が1対1で対応する」場合もあります。
興味があれば https://developer.mozilla.org/ja/docs/Learn/Server-side/First_steps/Web_frameworks とかみてみると良いと思います。
Redirect ディレクティブってコンテキスト(設定が有効な範囲)としては「サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess」となかなか範囲広いですが、最上位の「サーバ設定ファイル」から考えたら「このHTTP(Web)サーバにアクセスした」時点で評価されるものと理解できます。
で、「このHTTPサーバにアクセス」ってどういうことかって考えると、例えばPing-tの場合なら「 https://ping-t.com 」へアクセスした時のことだと言えますよね。(ここはおそらく同意いただけると思います)
ではここにアクセスしたときに見えるものって何かって言うと、DocumentRootディレクティブで設定したパスなんですよね。設定としては
DocumentRoot /usr/web
ここまでの理解に問題なければ、次の話は簡単です。
HTTPに関するURLの書式って基本的にはこうなんですよね。(詳しくは https://ja.wikipedia.org/wiki/Uniform_Resource_Locator なんか見ると良いです)
スキーム(http or https)://ホスト名/パス?クエリ文字列
例えば、このスレッドのURLは「https://ping-t.com/modules/forum/index.php?topic_id=5184 」なので、
スキーム:https
ホスト名:ping-t.com
パス:/modules/forum/index.php
クエリ文字列:topic_id=5184
となります。
と言うことで、「URL-pathとは、URLのパス部」を指しているものになります。で、ここが「/」の場合は「このWebサーバのDocumentRootへアクセスしたい場合に指定するパス」を意味しています。
なので設問の
引用:
古いアドレス「 http://www.test.com/ 」へアクセスされた際は、permanentステータスをクライアントに返し、「 http://www.example.com/ 」にアクセスさせなおしたい。
・www.test.com ホストのURL-pathである「/」へのHTTPアクセスを(www.test.com ホスト上の設定によって)
・http://www.example.com/ にアクセスし直させる(Redirectさせる)
・返すHTTPステータスはpermanent(301:Moved Permanently)
・(記載はないが、リダイレクト先はLocationヘッダで指定され、そこにRedirectディレクティブの書式の最後の設定内容=http://www.example.com/ が含まれる)
となります。
すこーし掘り下げると、この問題の考え方としてはHTTPプロトコル的に考えた方が素直です。
・アクセスしてきたURLとは「Webサーバが指定するものではなくクライアントが指定したもの」です。
・サーバは「URLを解析し、どう処理するか」を判断し、その後の動作を決めます。
・例えばVirtualHostを使って1台の物理サーバ上で5サイトが稼働している場合、URLの「ホスト名」によってどのバーチャルホストへのアクセスかを判断し、「パス(URL-path)」によってそのバーチャルホストのDocumentRoot配下のどのファイルのデータを返すかを決定します。
・ただし、「パス=DocumentRootで指定したディレクトリ配下のパスと必ずしも1対1で対応するわけではなく、Webアプリケーションサーバなどでは「URL-pathとプログラムの処理が1対1で対応する」場合もあります。
興味があれば https://developer.mozilla.org/ja/docs/Learn/Server-side/First_steps/Web_frameworks とかみてみると良いと思います。
Re: 問題ID : 9284 Apacheの基本的な設定
msg# 1.5
hidaruma12
投稿数: 96
回答ありがとうございます!
丁寧に解説も交えていただき本当に感謝しかないです。おかげでしっかりと理解することができ頭のモヤモヤが解消できました。
ありがとうございます!!
丁寧に解説も交えていただき本当に感謝しかないです。おかげでしっかりと理解することができ頭のモヤモヤが解消できました。
ありがとうございます!!