質問: このサイトを参考に、 Macのapacheでバーチャルホストの設定を行なっていたところ、ブラウザで http://localhost/~{username} を叩くと /Users/{username}/Sites のファイルにアクセスできるようにはなったのですが、ブラウザで http://localhost を叩くと Not Found The requested URL / was not found on this server. と表示されてしまいます。 /etc/apache2/httpd.confの設定では DocumentRootは DocumentRoot "/Library/WebServer/Documents" となっております。 index.htmlはDocumentsフォルダ直下にあります。 また、そもそもどうして上記サイトの設定でhttp://localhost/~{username}を叩くと/Users/{username}/Sitesにアクセスできるようになるのでしょうか? 設定ファイルには"~"という記号はありませんし、"~{username}"が示す文字列の意味が分かりません。 理由が分からず困っております。どなたかご教示いただけないでしょうか?
回答: 下記URLにアクセスすると、index.htmlが参照できるでしょうか。 > > http://localhost/index.html > > > 参照できる場合はDirectoryIndexの設定が必要かと思います。 参照できない場合は、DocumentRootやDirectory等の設定の追加確認が必要です。 以下は追加の質問についての回答です。 > > どうして上記サイトの設定でhttp://localhost/~{username}を叩くと/Users/{username}/Sitesにアクセスできるようになるのでしょうか? > > > `mod_userdir`モジュールが提供する機能によるものです。 mod_userdir - Apache HTTP サーバ バージョン 2.4 参考にされたサイトでの下記設定が上記モジュールの利用設定の記述になります。 > > LoadModule userdir_module libexec/apache2/mod_userdir.so > > Include /private/etc/apache2/extra/httpd-userdir.conf > > > mod_userdir は、`/~{username}`へのアクセスを `/Users/{username}/Sites`に読み替える処理を提供します。 {username}の値はOSのユーザーアカウント名となり、そのユーザーのホームディレクトリにあるSites配下を公開します。 なぜSitesが公開されるのかは、下記設定ファイルに記載している設定によります。 * /etc/apache2/extra/httpd-userdir.conf > > UserDir Sites > > > ここの記載を変更すると、公開対象のディレクトリ名も変更されます。 例えばpublic_htmlというディレクトリ名で指定されることもあります。 もし、`~{username}`を実際にこの文字列のまま入力されているようであれば、それは本来の使用用途とは異なるもののように思います。 また、なぜこの機能があるのかということになると、VPSサービスもNameVirtualHost設定もなく、1つのサーバーを複数の一般ユーザーで共有して使用していた過去の利用形態の名残によるものといってよいのではないかと思います。 古くからあるようなプロバイダのホームページサービス等で、現在もこの形のURLでのサービス提供が行われている場合があります。