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