我在配置 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
文件。