要解决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重写。