在 apache 中將腳本和靜態內容與位置標籤混合

在 apache 中將腳本和靜態內容與位置標籤混合

我正在嘗試將 Apache 配置為將大多數 URI 發送到我的 mod_perl 應用程序,但少數文件除外,我想使用預設處理程序來提供這些文件。 (發送靜態文件)

我想要全部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 的煩惱之一,也是我很高興 Ruby on Rails 出現的最終原因。

基本上,您無法共用 Perl 腳本所在的位置以及靜態內容的位置。它們必須位於不同的目錄中。我經常作弊並為靜態和動態內容使用不同的主機名,這消除了整個問題。您還可以閱讀更多有關如何將靜態內容放入子目錄中也許。

相關內容