负载平衡站点经常丢失固定链接设置

时间:2021-02-22 作者:indextwo

站点上的永久链接突然丢失,这是一个间歇性问题。进入wp admin并保存Settings->Permalinks (没有更改任何内容)总是修复它,但我不明白为什么它会首先丢失这些设置。

AWS Elastic Beanstalk实例上的站点:响应性地扩展服务器,以及单独的读写和只读数据库服务器,由HyperDB处理。当流量较高时,该站点可以扩展到十几台服务器之间的负载平衡。在交通流量较低的情况下,通常只有2点。如果您不熟悉EB体系结构,那么需要注意的是,随着它的上下扩展,它可以有效地“创建”和“销毁”服务器(但DB服务器总是不变的,只有web服务器可以扩展)。服务器管理员证实,周末的流量很高,该网站在缩小规模之前曾短暂扩大到10台服务器,但我们真的不知道这是问题还是巧合。

我不知道永久链接设置是如何丢失的,也不知道为什么会丢失。我查看了代码库,只有一个自定义插件可以调用flush_rewrite_rules(), 它只在插件激活时调用它。还有其他一些插件称其为“大”插件(例如WooCommerce、Download Monitor、Yoast),所以我怀疑它们是否是问题所在。这个.htaccess 文件在repo中,应该以一定的规模构建到每台服务器上(此外,如果它无法构建在一台服务器上,它不应该影响所有其他服务器,但这肯定会发生:永久链接是全面的)。

发生这种情况还有其他原因吗?这可能是服务器以这种方式扩展的结果吗?

1 个回复
SO网友:Coder At Heart

这表明存在以下问题:.htaccess. 将要Settings->Permalinks 将重新创建.htaccess, 因此,我认为这可能是您在加载过程中的文件权限问题,或者可能是因为它是一个点文件,服务器可能会以不同的方式处理该文件并以某种方式删除它?

这可能有用:

我有一个例行程序flush_rewrite_rules(true) 在部署我的主题时。我使用wp-cli (https://wp-cli.org/) 要触发此操作:

// in functions.php  (using closures)
add_action(\'cli_init\', function () {
  WP_CLI::add_command(\'deploy\', function () {
    flush_rewrite_rules(true);
    // do something else.
  });
});
作为部署过程的一部分,我在CI/CD过程中使用以下命令

cd \\path\\to\\wp_root
php wp-cli.phar deploy
这样你的.htaccess 每次部署时都会重新创建文件。

相关推荐

Problem with permalinks

我已经更改了类别的基本名称,现在它是“博客”,工作正常。但当我通过/blog/%category%/%postname%/更改结构时。显示404。如果我删除结构中的blog,它会再次工作,但我想使用blog word。问题出在哪里?非常感谢。