2

Apache 2.2x を使用しています。ほとんどのコンテンツは mod_perl を介して生成されます。つまり、ファイル システム マッピングのない動的コンテンツです。<ロケーション>を存分に活用。

アパッチ構成:

<Location /finance_module1>
  SetHandler perl-script
  PerlResponseHandler Finance::Module1
</Location>

<Location /finance/module2>
  SetHandler perl-script
  PerlResponseHandler Finance::Module2
</Location>

Module1 は機能し、私のセットアップが他の方法で機能することを示すためにここに示されています。

Module2 は機能しません。Apache は「ファイルが存在しません: /home/joe/www/htdocs/finance」と言います。モジュール構成の唯一の違いは、Module2 の場所に複数のスラッシュが含まれていることです (これをネストされたパスと呼んでいます)。

「ファイルが存在しません」エラーについて: もちろん存在しません。ファイルやディレクトリではなく、場所です。では、なぜこれが起こるのですか?

多くの mod_perl モジュールを持っているので、複数のスラッシュを含むパスを使用できるようにしたいと考えています。また、制御のために分類すると便利です。1 つの些細な例として、robots.txt は単純に次のように記述できます。

Disallow: /finance/

Apache ドキュメントでは、 < Location > ディレクティブはファイルシステムにマップする必要がなく、動的に生成されるコンテンツに適していると具体的に述べています。

私は何を間違っていますか?回避策はありますか? (明らかな「それをしないでください」以外に)。

ありがとう。

4

2 に答える 2

3

同じことを考えている他の人の利益のために、私自身の質問に答えます。

短い答え、LocationMatch を使用します。

上記の例では、URL が /finance/module1 と /finance/module2 であるとします。「finance/」パスを使用すると、必要な状況で、すべての財務ハンドラーをグループとして構成できます。

例えば:

<LocationMatch /finance/.*>
  SetHandler perl-script
  PerlAccessHandler foo
</LocationMatch>

<Location /finance/module1>
  SetHandler perl-script
  PerlResponseHandler Finance::Module1
</Location>

<Location /finance/module2>
  SetHandler perl-script
  PerlResponseHandler Finance::Module2
</Location>
于 2012-03-06T04:15:01.040 に答える
0

おそらくわずかなタイプミス?

<Location /finance_module1>

対。

<Location /finance/module2>

それが問題かどうかはわかりません。

おそらくこれ(httpd.confに追加)

Alias /finance "path-to-files"
<Directory "path-to-files">
  Options +Indexes
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

次に、スクリプトを試します。おそらくそこに空のフォルダーを作成することもできますか?

于 2012-02-02T03:46:25.980 に答える