Apache 忽略扩展名并通过 fastcgi 执行其他文件

Apache 忽略扩展名并通过 fastcgi 执行其他文件

我在配置 apache 以通过 FastCGI 仅运行带扩展名的文件时遇到问题.php。示例 VirtualHost 配置:

<VirtualHost 192.168.0.185:80>
    ServerName host1.example.com
    DocumentRoot /home/www/host1.example.com/WWW/

    SuexecUserGroup host1 www

    <Directory "/home/www/host1.example.com/WWW/">
        AllowOverride All
        Options +ExecCGI
        AddHandler fcgid-script .php
        FcgidWrapper /home/www/host1.example.com/fcgi/php5.fcgi
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

问题是,它还会将类似这样的文件whats.new.in.php.6.html(基本上每个包含后面.php跟着点的文件)作为 fastcgi 运行,而不是将其作为静态内容提供。我尝试过改变添加处理程序

AddHandler fcgid-script .php$

不幸的是——php 文件没有被解释并且作为纯文本提供。

有没有什么办法可以防止这种情况发生?

答案1

一个想法是删除美元符号。该AddHandler选项采用扩展名,而不是正则表达式或 glob。因此正确的行应该位于原始行中

# With or without the leading dot, mod_mime doesn't care
AddHandler fcgid-script .php

至于为什么它会将 html 文件标记为可执行文件,我不知道——可能有一个标志在某个地方设置它,也许是在默认配置中。但是,作为一种解决方法,您可以删除处理程序对于 .html 文件,使用以下命令,以便它们将被视为普通的文本/html 文件。

RemoveHandler .html

答案2

好的,我设法解决了这个问题。AddHandler我使用了AddType处理程序名称:

AddType fcgid-script .php

现在它只适用于*.php文件。

相关内容