Apache でスクリプトと静的コンテンツをロケーション タグと混合する

Apache でスクリプトと静的コンテンツをロケーション タグと混合する

私は、デフォルトのハンドラを使用して提供したいいくつかのファイルを除いて、ほとんどの URI を mod_perl アプリケーションに送信するように Apache を設定しようとしています。(静的ファイルを送信)

全てが欲しいですhttp://myserver.com/xxxxx より/、/index.html、robots.txt、および静的に提供されるいくつかのサブフォルダーを含む mod_perl に移動します。

さまざまな組み合わせを試してみましたが、うまくいきません。< LocationMatches > などを否定する方法はないようです。

PERL変数を定義すると、すべてスクリプトに移動します。これをオフにすると、静的データを切断できますが、明らかにスクリプトは機能しません。

<Directory /home/httpd/plaintext>
    AllowOverride None
    <Files ~ "(index.html|robots.txt|favicon.gif)">
          SetHandler default-script
    </Files>
        AddDefaultCharset utf-8 
    DirectorySlash off

    Order allow,deny
    Allow from all

</Directory>


<IfDefine PERL>
<Location />
          SetHandler perl-script
          PerlResponseHandler LinkCrunchDB::Handler
</Location>
</IfDefine>

内部リダイレクトを使用するようにモジュールをハッキングするとうまくいくかもしれませんが、見苦しいです。

私は Gentoo Linux を使用していますが、これには module.d/ フォルダーと vhost.d フォルダー内のすべてのファイルが含まれています。これらすべてをチェックし、ディレクトリ フォルダーまたはロケーション フォルダーを削除しましたが、何もありませんでした。

どうもありがとう。

答え1

これは私が長年 mod_perl に対して抱いてきた不満の 1 つであり、究極的には Ruby on Rails が登場してよかったと思う理由でもあります。

基本的に、Perlスクリプトと静的コンテンツの場所を共有することはできません。これらは別のディレクトリに配置する必要があります。私はよく、静的コンテンツと動的コンテンツに異なるホスト名を使用するというごまかしをしました。これで問題は解決しました。静的コンテンツをサブディレクトリに配置する方法多分。

関連情報