内容
ブラウザからURLにアクセスする際、パスの末尾にスラッシュありとなしでリダイレクトの発生有無が異なる場合がある。また、Apache httpdの定義により、自己参照URLも変わってくるため、実際にブラウザ(Edge)の開発者ツールを利用して動作検証して確認してみた。
環境
・Windows 11 Pro Insider Preview
Apache httpd定義
Listen:81
DocumentRoot : D:¥Apache24¥htdocs
フォルダ構成
D:¥Apache24¥htdocs (フォルダ)
¥test (フォルダ)
¥index.html (ファイル)
検証1
Apache httpd定義
# ServerName : (定義なし)
# UseCanonicalName:(定義なし)
検証結果
- http://localhost:81/testにアクセスした時、応答としてHTTPステータスコード301を返され、応答ヘッダーのLocationの通り末尾に/をつけたURLにリダイレクトされ、index.htmlの内容が表示された。
- http://localhost:81/test/ にアクセスした時、応答としてHTTPステータスコード200を返され、index.htmlの内容が表示された。
検証2
Apache httpd定義
ServerName : hkane8.local:80 (hkane8.localは、hostsにローカルPCのIPを定義)
UseCanonicalName: On
検証結果
- http://localhost:81/testにアクセスした時、応答としてHTTPステータスコード301を返され、応答ヘッダーのLocationは、Apache httpdに定義していたServerName(hkane8.local:80)がFQDNとなり、末尾に/をつけたURLにリダイレクトされた。リダイレクト先のファイルはないため、404エラーになった。
- http://localhost:81/test/ にアクセスした時、応答としてHTTPステータスコード200を返され、index.htmlの内容が表示された。
検証3
Apache httpd定義
ServerName : https://hkane8.local:443(hkane8.localは、hostsにローカルPCのIPを定義)
UseCanonicalName: On
検証結果
- http://localhost:81/testにアクセスした時、応答としてHTTPステータスコード301を返され、応答ヘッダーのLocationは、Apache httpdに定義していたServerName(https://hkane8.local:443)がFQDNとなり、末尾に/をつけたURLにリダイレクトされた。SSL証明書の設定はしていないため、接続がプライベートではないエラーが表示された。
確認結果の整理
- URLのパス末尾の/がなくフォルダを指定している場合、301リダイレクトの通信が発生する。
- UseCanonicalNameをOnにしてServerNameにプロトコル、ドメイン名、ポート番号を記載すれば、自己参照URLの値を設定できる。
以上です。