私はUbuntu 14.04でapache v2.4を実行しており、コンテナ/ディレクティブはこの形式です
<IfModule mpm_prefork_module>
# ...
</IfModule>
ただし、Apache の公式ドキュメントや StackExchange サイトで、次のようにモジュールが参照されているのをよく見かけます。
<IfModule prefork.c>
# ...
</IfModule>
私はたくさん検索しました、ここ-http://httpd.apache.org/docs/2.4/mod/core.html#ifmodule違いは何なのか、またどちらをいつ使用すべきなのかがわかりません。
書き換えモジュールを例に挙げる
アパッチからドキュメント: ifmodule ディレクティブ
モジュール引数は、モジュールがコンパイルされた時点のモジュール識別子またはファイル名のいずれかになります。
たとえば、rewrite_module は識別子で、mod_rewrite.c はファイル名です。
.htaccess
ファイルではこれがよく見られます
<IfModule mod_rewrite.c>
# ....
</IfModule>
ディレクトリを確認grep
しました/etc/apache2
が、「mod_rewrite.c」はどこにも定義されていません。
私のマシンでは、ファイルに次の内容/etc/apache2/mods-available/rewrite.load
が含まれています:
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
つまり、mod_rewrite.c
Windows やその他のファイルへの参照ですか? その場合、Linux マシンで参照するのは間違った構文になりますか?
答え1
このページではリンクされたには、次のテキストが含まれています。
モジュール引数は、モジュールがコンパイルされたときのモジュール識別子またはファイル名のいずれかになります。たとえば、rewrite_module は識別子で、mod_rewrite.c はファイル名です。モジュールが複数のソース ファイルで構成されている場合は、文字列 STANDARD20_MODULE_STUFF を含むファイル名を使用します。
提供されている例を使用すると、書き換えモジュールは 'rewrite_module' (識別子) または mod_rewrite.c (ファイル名) のいずれかとして参照できます。どちらも同等であり、違いはありません。どちらでも使用できます。
ソース ファイル mod_rewrite.c を持つモジュールは、mod_rewrite.so にコンパイルされ、ファイル システム上に作成されます。このソース ファイルには、'module AP_MODULE_DECLARE_DATA rewrite_module;' という行があり、'rewrite_module' というモジュールを宣言しています。
モジュールは、識別子である「rewrite_module」、またはコンパイル元のソース ファイルである「mod_rewrite.c」のいずれかで参照できます。
「LoadModule」行は、すでにコンパイルされたオブジェクト mod_rewrite.so から識別子「rewrite_module」を持つモジュールをロードするように指示します。これを構成する場合、識別子またはソース ファイル名 (わかっている場合) を参照できます。
答え2
@DanielLawson がすでに指摘しているように、これはリンク先の Apache マニュアル ページに明確に説明されています。
モジュール引数は、コンパイル時のモジュール識別子またはモジュールのファイル名のいずれかになります。
モジュールのファイル名は.cApache httpd は C 言語で開発されているため、拡張子は C です。
モジュール識別子の概念は、Stack Exchangeのタグに似ています。<IfModule mpm_prefork_module>
ブロックには次のように書かれています:mpm_prefork_モジュールこれにより、設定の柔軟性が向上し、異なるモジュールで同じ機能を提供できるようになります。モジュールそしてmod_gnutls.c両方持っていますssl_モジュール識別子。