Apache共通ドキュメントルート、さまざまな仮想ホスト、さまざまなアクセス可能ファイル

Apache共通ドキュメントルート、さまざまな仮想ホスト、さまざまなアクセス可能ファイル

LFCE試験を見て質問しました。この質問には、apache2と2つの仮想ホストをインストールする必要があります。 site1.example.com と site2.example.com. 2 つの仮想ホスト共有ドキュメントルートディレクトリ/var/www/html/。。また、ドキュメントルートに2つの異なるファイルが必要です。 test_page1.htmlとtest_page2.htmlと要求されたファイルtest_page1.htmlはsite1.example.com仮想ホストからのみアクセスできますが、test_page2.htmlはsite2.example.comからのみアクセスできます。

私の質問は、test_page1.htmlがvhost 2からアクセスできないようにし、その逆も同様であることを確認する方法です(同じドキュメントルートを共有する場合)。

仮想ホスト1

<VirtualHost *:80>
ServerName site1.example.com
DocumentRoot /var/www/html/
<Directory /var/www/html/> 
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

仮想ホスト2

<VirtualHost *:80>
ServerName site2.example.com
DocumentRoot /var/www/html/
<Directory /var/www/html/> 
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

ベストアンサー1

後で参考にするために私の質問に答えます。組み合わせると可能です。場所詰まった、一般的な表現そしてサーバー変数

新しいプロファイルの作成

nano /etc/apache2/sites-available/secure.conf

次に追加:

<Location /test_page1.html>
    <If "!(%{SERVER_NAME} -strmatch 'site1.example.com*')">
    Require all denied
    </If>
</Location>
<Location /test_page2.html>
    <If "!(%{SERVER_NAME} -strmatch 'site2.example.com*')">
    Require all denied
    </If>
</Location>

設定を有効にしてApacheを再起動します。

 a2ensite secure
 systemctl restart apache2

おすすめ記事