web-dev-qa-db-ja.com

Apache 2.4は、拡張子がなくてもイメージファイルをロードします。どうして?

次のHTMLページがあります。

<img src=J3 width="100" height="150" alt="Student Name" style="float:left;"/>

同じディレクトリに画像ファイルJ3.jpgがあります。上記の画像要素を含むページは画像ファイルを正常にロードしますが、その理由はわかりません。 (src=属性が壊れていることは知っています。私は大学の教師であり、これは学生の仕事です。)

各学生の作品は/ home/userid/public_htmlにあります。 /etc/httpd/conf/httpd.confの関連セクションは次のとおりです。

<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

Httpd.confでMultiViewsを検索すると、コメント行が2行しか見つからないため、MultiViewsは他の場所では有効になりません。構成ファイルにmod_rewriteがありません。

各学生のディレクトリに.htaccessファイルがあります。そこにはMultiViewsもありませんが、完全を期すために、問題の1つを次に示します。

AuthType Basic
AuthName "Password Required"
Satisfy any
Deny from all
AuthUserFile /etc/httpd/users
AuthGroupFile /etc/httpd/groups
Require user [redacted]
Require group professors

私の目標はhttpd.confを変更して、上記が機能しなくなるようにし、それを生徒に正しく行うように指示することです。

was上記のディレクトリセクションにMultiViewsがあります。ここに投稿する前に削除し、httpdを再起動しました。/var/log/messagesをチェックして、HTTPデーモンが正常に再起動されたことを確実に確実に確認しました。

生徒のpublic_htmlディレクトリの内容をサーバールートの下のディレクトリ、具体的には/var/www/html/2015_02/student/にコピーすると、画像はnot表示されるため、その生徒のディレクトリまたはすべての方法に関するものです学生ディレクトリは上記の構成でセットアップされます。以下のテストは、その特定のディレクトリの問題を除外します。

/home/bbrown/public_html/という偽の学生ディレクトリを作成し、その中にjpegを配置しました。 I can.jpg拡張子なしで表示します。e.g。http://weblab.spsu.edu/~bbrown/bbrown_quad_175で、URLは拡張子なしで変更されません。おそらく<Directory /home/*/public_html>セクションの構成に問題があります。これはすべてMultiViewsを削除して再起動した後に行われたため、画像がキャッシュされてキャッシュから提供される可能性はありません。

4
Bob Brown

Apacheのこの機能は「MultiViews」と呼ばれ、 コンテンツネゴシエーションモジュール によって処理されます。

... /some/dirでMultiViewsが有効になっており、/some/dir/fooが存在しない場合、サーバーはfoo.*という名前のファイルを探してディレクトリを読み取り、それらすべてを効果的にタイプマップしますクライアントが名前でファイルの1つを要求した場合と同じメディアタイプとコンテンツエンコーディングを割り当てます。次に、クライアントの要件に最適なものを選択します。

ServerFaultからのこの質問で説明されているように、構成Options -MultiViewsで無効にすることができます: Apache multiviews、how to disable disable

MultiViewsオプションは、メインのhttpd.confファイル、.htaccessファイル、またはIncludeディレクティブに含まれるファイル(/etc/httpd/conf.dなど)に表示できます。メインの構成ファイルを確認するだけでは十分ではありません。

7