Re: 問題ID : 9284 Apacheの基本的な設定
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 とかみてみると良いと思います。
投稿ツリー
-
問題ID : 9284 Apacheの基本的な設定
(hidaruma12, 2021-12-1 14:33)
- Re: 問題ID : 9284 Apacheの基本的な設定 (quensan, 2021-12-2 12:46)
- Re: 問題ID : 9284 Apacheの基本的な設定 (hidaruma12, 2021-12-2 20:15)
- Re: 問題ID : 9284 Apacheの基本的な設定 (quensan, 2021-12-3 17:16)
-
Re: 問題ID : 9284 Apacheの基本的な設定
(hidaruma12, 2021-12-3 22:58)
- Re: 問題ID : 9284 Apacheの基本的な設定 (arashi1977, 2021-12-4 11:28)
- Re: 問題ID : 9284 Apacheの基本的な設定 (hidaruma12, 2021-12-4 11:42)