在 Apache 中混合脚本和带有位置标签的静态内容

在 Apache 中混合脚本和带有位置标签的静态内容

我正在尝试配置 Apache,以便将大多数 URI 发送到我的 mod_perl 应用程序,但有几个文件除外,我想使用默认处理程序来提供这些文件。(发送静态文件)

我想要全部http://myserver.com/xxxxx转到 mod_perl,其中包含 /、/index.html、robots.txt 和一些要静态提供的子文件夹。

我尝试了多种不同的组合,但都无法成功。似乎没有办法否定 < 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 脚本和静态内容的位置。它们必须位于不同的目录中。我经常作弊,对静态和动态内容使用不同的主机名,这样就解决了整个问题。您还可以阅读更多有关如何将静态内容放入子目录中也许。

相关内容