我刚刚将Wordpress多站点从Apache2.4Pre叉+ mod_php移到了一个新服务器上,使用Apache2.4事件+php。
该网站在前端运行良好,它比以前快得多,因为CGI,但是.Wordpress管理面板只为主站点(和网络管理)工作。第二个站点的管理区域不再工作,但是前端工作非常好。
示例
我试图调试重写,但我拥有的唯一日志(也使用debug级别8)是
[proxy_fcgi:error] [pid 13700:tid 140381047965440] [client X.X.X.X:54354] AH01071: Got error 'Primary script unknown\n', referer: http://www.example.com/en/wp-admin/跟我的配置一样。任何帮助都很感激。谢谢。
虚拟主机
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/srv/www/example.com/public_html"
<IfModule mpm_event_module>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/srv/www/example.com/public_html/$1
</IfModule>
<Directory "/srv/www/example.com/public_html">
AllowOverride all
Require all granted
</Directory>
ErrorLog /srv/www/example.com/logs/error_log
TransferLog /srv/www/example.com/logs/access_log
</VirtualHost>.htaccess
<Files "xmlrpc.php">
Order Allow,Deny
Deny from all
</Files>
# BEGIN WordPress
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(admin|content|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+]/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress发布于 2016-09-28 03:50:05
不知道你是否找到了解决办法。我只想分享我们对这个问题的解决方案。
我们刚刚将下面的行添加到apache配置中。这将对regex中的所有项目进行转发到FPM。
ProxyPassMatch ^/([_0-9a-zA-Z-]+/)?(wp-(admin|activate|blog-header|comments-post|config|cron|links-opml|load|login|mail|settings|signup|trackback)\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$2发布于 2017-12-05 14:00:27
我添加了一个不同的解决方案,因为@parpar's one虽然对我有用,但它继续抛出proxy_fcgi错误:
[proxy_fcgi:error] Got error 'Primary script unknown\n'解决方案包括删除调用PHP的ProxyPassMatch方式,并在Directory环境中包括一个管理PHP调用的处理程序:
<Directory "/path/to/host/root">
# rest of configuration...
<FilesMatch \.php$>
SetHandler "proxy:unix:/path/to/socket.sock|fcgi://localhost"
</FilesMatch>
</Directory>发布于 2021-05-10 07:09:30
当我将WordPress多站点从本地XAMPP安装转移到带有Apache2.4.29和php的Ubuntu18.04服务器时,我遇到了完全相同的问题,因此找到了这篇文章。
对于每一个也在努力解决这个问题的人来说,我发现以下的资源是有帮助的,但是他们并没有为我开箱即用:
- [https://cwiki.apache.org/confluence/display/httpd/PHP-FPM](https://cwiki.apache.org/confluence/display/httpd/PHP-FPM)
- [https://cwiki.apache.org/confluence/display/HTTPD/PHPFPMWordpress](https://cwiki.apache.org/confluence/display/HTTPD/PHPFPMWordpress)我没有使用ProxyPassMatch,而是在迁移的页面的虚拟主机中使用了下面的Apache配置:
...
<FilesMatch "\.php$">
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"
</If>
</FilesMatch>
...通过这种配置,apache能够识别Wordpress、.htaccess,从而适用于多站点路由的重写规则。由于if语句,只有现有的php文件被传递给php。
到目前为止,main和/en/路由对前端和管理页面都进行了正确的解析。
https://stackoverflow.com/questions/34698636
复制相似问题