我怎样才能让 apache 仅将 .php 文件传递​​给 fastcgi?

我怎样才能让 apache 仅将 .php 文件传递​​给 fastcgi?

我们在其中一个站点上运行了不同版本的 PHP,因此我们配置了 fastcgi。但是对任何文件的请求,甚至静态 css 和 js 都会被传递。我们如何将其限制为仅限 php?这是当前配置:

<VirtualHost *:80>
    DocumentRoot /services/www/htmlblog
    DirectoryIndex index.html index.shtml index.cgi index.php
    ServerName 128.199.222.207

    ServerAlias www.blog.example.org

    <IfModule mod_fastcgi.c>
        <FilesMatch \.php$>
            SetHandler php-script
        </FilesMatch>
        FastCgiExternalServer /services/www/htmlblog -host 127.0.0.1:8998 -pass-header Authorization
    </IfModule>
   <FilesMatch "configuration.php">
        Order allow,deny
        Deny from all
   </FilesMatch>
   <Directory "/">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
   </Directory>
</VirtualHost>

我尝试过这个:

<IfModule mod_fastcgi.c>
  AddHandler php5-fcgi .php
  Action php5-fcgi /php5-fcgi
  Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
  FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:8998 -pass-header Authorization -idle-timeout 60
</IfModule>

这将提供位于该文件夹中的 index.php 文件。如果我将其更改为:

FastCgiExternalServer /services/www/htmlblog -host 127.0.0.1:8998 -pass-header Authorization -idle-timeout 60

它再次将静态文件传递给 php-fpm。

答案1

我认为你的配置不正确。

它应该是这样的:

<IfModule mod_fastcgi.c>
  AddHandler php5-fcgi .php
  Action php5-fcgi /php5-fcgi
  Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
  FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 60
</IfModule>

谢谢,然后只应将 PHP 文件传递​​给 FastCGI 服务器。

另外,我所做的是创建一个 fastcgi-php.conf 文件并将其放入我的 conf-available 文件夹中,并将其符号链接,这样我就可以为整个服务器启用 PHP。

相关内容