質問: apacheは別のマウントからフォルダのインデックスを作成しません 基本認証を使用する別のローカルext4マウントから、webルート外のフォルダーのディレクトリ一覧を有効にしようとしていますが、空のリストが取得され、エラーは記録されません。奇妙なのは、ブラウザのこのディレクトリの下にあるファイルの既知の場所に置くと、ファイルが正常にダウンロードされることです。 これが私のexample.confファイルです。<virtualhost *:80> serveradmin donotreply@blah.com servername example.com serveralias www.example.com directoryindex index.php documentroot /var/www/example.com <directory /> options followsymlinks allowoverride all </directory> loglevel warn errorlog /var/apachelogs/error.log customlog /var/apachelogs/access.log combined alias /blah2 "/blah1/blah2" <location /blah2> options +indexes +multiviews +followsymlinks indexoptions +fancyindexing </location> </virtualhost> そして、これが私の.htaccessですauthtype basic authname "authentication required" authuserfile "/home/myusername/.htpasswd" require valid-user また、/etc/apache2/mods-enabled/autoindex.confでindexignoreをコメントアウトしました#indexignore .??* *~ *# rcs cvs *,v *,t chmod -r 755 /blah1/blah2、chgrp -r www-data /blah1/blah2、chmod a+x -r /blah1/blah2を実行しました。フォルダーの所有者はwww-dataのメンバーです。 sudo usermod -a -g www-data myusernameを実行すると、すべてのファイルとフォルダを正常に参照して読み取ることができます。いくつかのテストを行うと、ホームディレクトリの下に/ blah1/blah2を移動してエイリアスを変更すると、構成が正常に機能します。 apacheはファイル自体を明確に読み取ることができますが、mod_autoindexをめちゃくちゃにしている別のマウント上にあることについて何かがあります。認証を削除しても効果はありません。 loglevel warnを使用すると、ログに記録されたエラーは発生しません。 loglevelをtrace4に変更した後、 これは私のエラーログです です。これが/etc/fstabからのマウント行です:uuid=[theuuid] /blah1 ext4 rw,nosuid,nodev,errors=remount-ro 0 0 [〜#〜] edit [〜#〜]最後の注意:www-dataが私のフォルダーに読み書きできることを確認して、次のphpを作成しました脚本:<?php mkdir ("testdir"); var_dump(scandir('.')); ?> 結果:ディレクトリtestdirが所有者www-data:www-dataで作成され、ディレクトリとファイルのリストが変数としてダンプされます。edit2権限を正しく設定するために次のコマンドを実行しました。chmod 755 /blah1/blah2 chmod 755 /blah1 find /blah1/blah2 -type d -exec chgrp www-data {} + find /blah1/blah2 -type d -exec chmod o+rx {} + find /blah1/blah2 -type d -exec chmod g+rwxs {} + まだ同じ結果。
回答: example.confに基づいて、ドキュメントルートとして/var/www/example.com、ディレクトリext4として/blah1/blah2がマウントされています。 マウントされたディレクトリにシンボリックリンクされたドキュメントルートを想定します。ここで、ドキュメントルートの場所を確認する必要があります。 rsyncを使用してファイルをコピーします。 htmlを含む場所に転送するのではなく、マウントポイントに内容をダンプします。$sudo rsync -av /var/www/example.com/html /blah1/blah2 これで、構成を更新する準備が整いました<virtualhost *:80> ... ... documentroot /var/www/example.com <directory /> options followsymlinks allowoverride all </directory> ... ... alias /blah2 "/blah1/blah2" <directory "/blah1/blah2"> options indexes followsymlinks multiviews allowoverride all indexoptions fancyindexing require valid-user ... ... #to ensure the documentroot is updated in rewrites or aliases to reflect the changes at the new location. rewriteengineon rewritecond %{http_host} =www.example.com rewriterule ^index\.html$ filename.html ... </directory> <virtualhost> mod_rewriteを有効にするのを忘れないでください docs を参照してください。最後に構文をチェックし、apacheを再起動します。$sudo apachectl configtest $sudo systemctl reload apache これがお役に立てば幸いです。