要解决Apache mod_proxy_fcgi、php-fpm和URL重写的问题,可以按照以下步骤进行:
mod_proxy
和mod_proxy_fcgi
模块。可以使用以下命令来启用这些模块:sudo a2enmod proxy proxy_fcgi
ServerName example.com
DocumentRoot /path/to/document/root
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/document/root/$1
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
上述配置将所有以.php
结尾的请求转发到php-fpm的监听地址(默认为127.0.0.1:9000
)。
php-fpm.conf
文件,将以下行取消注释(去掉前面的分号):cgi.fix_pathinfo=1
这将启用PHP的PATH_INFO
解析,以支持URL重写。
.htaccess
文件,并添加URL重写规则。例如,如果要将所有请求重写到index.php
文件,可以使用以下规则:RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
上述规则将会将所有没有对应文件的请求重写到index.php
。
sudo service apache2 restart
现在,Apache将会通过mod_proxy_fcgi将所有以.php
结尾的请求转发到php-fpm并进行处理,同时支持URL重写。