2011-10-28 6 views
1

Apacheモジュールを作成していますが、ディレクトリ構成のマージ機能の動作についていくつか混乱しています。 mod_exampleのソースでApacheモジュールへの引数の理解ディレクトリ構成のマージ機能

、パラメータは次のように標識される:

static void *x_merge_dir_config(apr_pool_t *p, void *parent_conf, void *newloc_conf); 

しかし、このようなディレクティブ所与:この機能は、http://localhost/path/へのアクセスの結果として呼び出された場合

<Location /path/> 
    MyOption value-from-path 
</Location> 

<Location /> 
    MyOption value-from-root 
</Location> 

を関数は、/path/からのparent_confと、/からのnewloc_confを使用して呼び出されます。これは、これらのパラメータの名前に基づいて予想されるものとまったく逆です。私は親として "/"を、子/下位/最も特定のパスとして "/ blog /"を記述します。

私は本当の話が何であるか把握しようとしています。 Apacheは私とは違って "parent"という言葉を使いますか? mod_exampleはこれらのパラメータの誤った名前を付けましたか?私は単に混乱していますか?

+1

こんにちは、投票に近い人に投票してください:私の考え方から見ると、これは絶対にソフトウェア開発の問題なので、投票を終了するときにコメントを残すと助けになります。つまり、大部分のソフトウェアのC APIに対する記述についての質問です。それは標的に見える。 – larsks

答えて

1

「親」/「新しい」引数は、Apacheが設定ディレクティブを適用する順序と、これらのディレクティブに関連付けられたパス名よりも関係があります。ご存知のように、サーバごと、次にvhost、そしてLocationセクションなどで始まり、このリストの後のディレクティブは以前のものを上書きします。そして、マージコールバックの仕事は "親"のものを "newloc"のもので上書きした結果を計算することです。

複数のロケーションセクションがリクエストに一致する場合は、they are applied in the order they appear in the config fileです。したがって、MyOption value-from-rootがマージされた場合、それはvalue-from-pathの後に適用され、 "newloc" argにあり、その時点までに計算されたコンフィギュレーションはvalue-from-pathを含む "新しい"構成です。 "

(あなたのモジュールは珍しいマージの動作を持っていない限りはさておき、これはおそらく2つの場所のセクションの順番を入れ替えたいの手段として第二のものを、根のために、常にが適用されます、そしておそらく防ぐことができます最初のものは目に見える効果がありません)。

+0

うわー、私は今までにここで応答を断念した。あなたの考えをありがとう。私は今晩にいくつかの実験を試み、それがどのように見えるかを見るでしょう。 – larsks

関連する問題