403更改WP多站点非主站点上的设置时被禁止

时间:2019-07-09 作者:Pdev

因此,我安装了一个新的5.2 WP,并建立了与子域一起工作的多站点网络,然后创建了两个新的测试站点。

从外面看,一切都很好,我可以浏览主站点和2个测试站点。

在管理面板上,我可以在网络管理->站点下更改主站点设置选项卡,并正确保存。

当我尝试在这两个测试站点中的任何一个站点上执行相同操作时,虽然我得到了一个403禁止错误,但表单发送到的php脚本URL与主站点相同(/wp-admin/network/site-settings.php?action=update-site) 这让我感到困惑,因为它应该是有效的。

我已经检查了403个错误的多个指南,所有检查都正常:

DB multisite tables are are there文件权限似乎还可以,我甚至正在尝试使用所有755 atm

  • 配置方面,这是所有WP默认值,因为它是一个新安装,创建了子域通配符,路径设置为与域相同,我正在使用网络安装中的HTACCESS代码:
    • Options FollowSymlinks
      # BEGIN WordPress
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\\.php$ - [L]
      
      # add a trailing slash to /wp-admin
      RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
      
      RewriteCond %{REQUEST_FILENAME} -f [OR]
      RewriteCond %{REQUEST_FILENAME} -d
      RewriteRule ^ - [L]
      RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
      RewriteRule ^(.*\\.php)$ $1 [L]
      RewriteRule . index.php [L]
      # END WordPress
      
      将网络安装线路添加到wp配置中。php:

      /* MULTISITE */ 
      define(\'WP_ALLOW_MULTISITE\', true);
      define(\'MULTISITE\', true);
      define(\'SUBDOMAIN_INSTALL\', true);
      define(\'DOMAIN_CURRENT_SITE\', \'mydomain.com\');
      define(\'PATH_CURRENT_SITE\', \'/\');
      define(\'SITE_ID_CURRENT_SITE\', 1);
      define(\'BLOG_ID_CURRENT_SITE\', 1);
      
      
      /* That\'s all, stop editing! Happy blogging. */
      
      /** Absolute path to the WordPress directory. */
      if ( ! defined( \'ABSPATH\' ) )
          define( \'ABSPATH\', dirname( __FILE__ ) . \'/\' );
      
      /** Sets up WordPress vars and included files. */
      require_once ABSPATH . \'wp-settings.php\';`
      
      你知道问题出在哪里吗?

    2 个回复
    SO网友:Jrggv

    我也有同样的问题-我发现Apache modsecurity中包含一组Wordpress排除的规则没有涵盖/network/site-settings.php, 所以我可以在我的多站点设置中做任何事情,除了编辑站点。在文件中/usr/share/modsecurity-crs/rules/REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf 我添加了以下行:

    SecRule REQUEST_FILENAME "@endsWith /wp-admin/network/site-settings.php" \\
       "id:9009999,\\
       phase:1,\\
       pass,\\
       t:none,\\
       nolog,\\
       ctl:ruleRemoveById=941140,\\
       ctl:ruleRemoveById=941160,\\
       ctl:ruleRemoveById=942190,\\
       ctl:ruleRemoveById=942240,\\
       ctl:ruleRemoveById=942240,\\
       ctl:ruleRemoveById=980130,\\
       ctl:ruleRemoveById=949110"
    
    。。。这是我第一次体验编辑modsecurity规则,所以可能有更好的方法来做这件事——但它奏效了。

    SO网友:robwatson_dev

    我知道我的建议听起来很荒谬,但在网络模式下本地运行WordPress时,我也遇到过很多类似的问题。

    清除整个缓存(可能不止一次)。在Chrome中,这似乎比其他有我个人经验的浏览器更成问题。

    否则,请取消子域上的通配符,并在主机文件中(仅限本地)或在域提供商处使用正确的DNS设置进行设置。