Apache/local で、ディレクトリ アクセスと名前付きホスト アクセスの両方をサポートするにはどうすればよいですか?

Apache/local で、ディレクトリ アクセスと名前付きホスト アクセスの両方をサポートするにはどうすればよいですか?

Directory ディレクティブと (おそらく) VirtualHost ディレクティブの使い方は理解しています。さらに、これらを混在させることはできないことも理解しています (ただし、ネストすることはできます)。これらを混在させると、以前は機能していた Directory タイプの URL に対して 404 が見つかりません。

では、設定ファイルで「localhost/my/website」と「mydomainname.com」の両方の URL の参照をサポートするにはどうすればよいでしょうか?

私の根拠: 他の Web サイトでは http を使用しながら、mydomainname.com では https を使用するようにしたいです。HOSTS ファイル (ローカル DNS) で mydomainname.com を 127.0.0.1 に変換済みなので、解決に近づいていると思います。

何時間もこれに取り組んでいますが、まったく進展がありません。Apache のドキュメントは役に立ちません。

理想的には、誰かが私の望みを達成する方法をスケッチしてくれることです。

答え1

質問から判断すると、あなたはDirectoryとの違いを理解していないと思いますVirtualHost

<Directory></Directory>指定されたディレクトリ、そのディレクトリのサブディレクトリ、およびそれぞれのディレクトリ内のファイルにのみ適用されるディレクティブのグループを囲むために使用されます。

<VirtualHost></VirtualHost>特定の仮想ホストにのみ適用されるディレクティブのグループを囲むために使用されます。仮想ホストのコンテキストで許可されているディレクティブはすべて使用できます。サーバーが特定の仮想ホスト上のドキュメントの要求を受信すると、セクションに囲まれた構成ディレクティブが使用されます<VirtualHost>

ディレクティブ<Directory>は「ディレクトリ タイプの URL」を制御しません。DocumentRootそしてそのAliasディレクティブは、ファイル システム内のコンテンツが見つかる場所を制御します。これらのディレクティブは、サーバー設定内または 内で直接使用できます<VirtualHost>

あなたが達成しようとしていることを実現するには、<VirtualHost>異なる を持つ2 つの が必要ですDocumentRoot。例:

Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/www"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/examplecom"
    ServerName example.com
</VirtualHost>

これで、同じウェブサイトに と の両方ができましたhttp://localhost/examplecom/。サイトがすべて同じファイルシステムディレクトリの下にない場合は、 eshttp://example.com/を使用する必要があります。例:Alias

Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/www"
    ServerName localhost

    Alias "/examplecom" "/home/user/sites/example.com"
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/home/user/sites/example.com"
    ServerName example.com
</VirtualHost>

関連情報