Apache-2.2

Apache忽略副檔名並通過fastcgi執行其他文件

  • February 7, 2011

我在將 apache 配置為僅.php通過 FastCGI 執行具有副檔名的文件時遇到問題。範例 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更改為

AddHandler fcgid-script .php$

沒有運氣 - php 文件沒有被解釋並作為純文字提供。

有沒有辦法防止這種情況?

好的,我設法解決了這個問題。而不是AddHandler我使用AddType處理程序名稱:

AddType fcgid-script .php

現在它只適用於*.php文件。

一個想法是刪除美元符號。該AddHandler選項採用副檔名,而不是正則表達式或 glob。所以正確的行會在你原來的

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

至於為什麼將 html 文件標記為執行檔,我不知道——可能在某個地方設置了一個標誌,也許是在預設配置中。但是,作為一種解決方法,您可以使用以下命令刪除.html 文件的處理程序,以便將它們視為普通文本/html 文件。

RemoveHandler .html

引用自:https://serverfault.com/questions/205972