web-dev-qa-db-ja.com

Apache2.2で特定のVirtualHostのディレクトリビュー/トラバーサルを許可する

次の仮想ホストを構成しています。

<VirtualHost *:80>
    DocumentRoot /var/www/myvhost
    ServerName myv.Host.com
    ServerAlias myv.Host.com
    ErrorLog logs/myvhost-error_log
    CustomLog logs/myvhost-access_log combined
    ServerAdmin [email protected]
    <Directory /var/www/myvhost>
        AllowOverride All
        Options +Indexes
    </Directory>
</VirtualHost>

構成appearsapachectlツールの観点から正しいこと。

ただし、その仮想ホストでディレクトリリストを取得できません。

Forbidden

You don't have permission to access / on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

エラーログには次のように表示されます。

[Wed Mar 07 19:23:33 2012] [error] [client 66.6.145.214] Directory index forbidden by Options directive: /var/www/******

update2

最近では、以下がerror.logに組み込まれています。

[Wed Mar 07 20:16:10 2012] [error] [client 192.152.243.233] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/error/noindex.html

update3

今日、次のものが追い出されています:

[Thu Mar 08 14:05:56 2012] [error] [client 66.6.145.214] Directory index forbidden by Options directive: /var/www/<mydir>
[Thu Mar 08 14:05:56 2012] [error] [client 66.6.145.214] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/error/noindex.html
[Thu Mar 08 14:05:57 2012] [error] [client 66.6.145.214] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

これは、vhosts.confファイルを次のように変更した後です。

<VirtualHost *:80>
    DocumentRoot /var/www/<mydir>
    ServerName myhost
    ServerAlias myhost
    ErrorLog logs/myhost-error_log
    CustomLog logs/myhost-access_log combined
    ServerAdmin admin@myhost
    <Directory "/var/www/<mydir>">
         Options All +Indexes +FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
    </Directory>
</VirtualHost>

何が欠けている?

アップデート4

すべてルートディレクトリのサブディレクトリはディレクトリリストを適切に実行します-それはのみできないルートです。

3
warren

私の解決策(2012年3月21日現在)

  • すべてのコンテンツをサブディレクトリに移動します
  • リダイレクトを作成するindex.htmlサブディレクトリにリロードするルートのファイル

ディレクトリ自体をトラバースできない理由を知りたいのですが、これは今のところ機能しています。

0
warren

403は、リソースが見つかったことを意味します。 Apacheに、ドキュメントルートとその上のすべてのディレクトリ、およびその中のファイルをr-xr--するためのある程度の権限があることを確認してください。

Directoryディレクティブをに変更してみてください

<Directory /var/www/myvhost>
    AllowOverride All
    Options +Indexes
    Order allow,deny 
    Allow from all
</Directory>
7
user9517

私は今日同様の問題を抱えていましたが、上記のようなエラーが発生しました。

[Wed Oct 17 14:19:08 2012] [error] [client 123.66.66.22] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/mysite/

+/-の有無にかかわらずオプションを混在させることは問題があります。 オプションに関するApacheのドキュメント に注意してください

+または-を含むオプションとそれらを含まないオプションを混在させることは有効な構文ではなく、サーバーの起動時に構文チェックによって中止され、中止されます。

また、+ /-なしでディレクティブを有効に使用すると、そのディレクトリに対して以前に設定された他のすべてのディレクティブが削除されます。

+なしでインデックスを使用しましたが、上記でコピーしたエラーが発生しました。

.htaccessファイルを使用していないと言うので、Directoryディレクティブを次のように変更してみませんか。

<Directory /var/www/myvhost>
    AllowOverride None
    Options +Indexes
    Order allow,deny
    Allow from all
</Directory>
1
user12345

私のCentOS 5/6/7システムでは、この問題はシステムに付属しているデフォルトの/etc/httpd/conf.d/welcome.confでの何らかの競合によって引き起こされます。 welcome.confのすべての行をコメントアウトしてWebサーバーを再起動すると、ディレクトリインデックスがwebrootで表示できるようになります。これは、少なくともRed Hat/CentOSシステムだけで出荷されるデフォルトのWebサーバー設定のバグであるように見えますが、他のシステムにも潜在的にある可能性があります。システムで同様の問題が発生している可能性があります。

0
user345085