我知道关于重写规则不能正常工作的查询非常常见,但在我的情况下,实际上我无法首先创建规则。我需要创建一个插件,将加载到许多网站,并为每个网站提供一些常见的功能。它将提供的功能之一是创建这些站点通用的重写规则。此时,我将测试示例缩减为以下内容:
运行apache 2.4的Debian服务器。x、 php 5.6.3x,wordpress 4.9.4,使用mysql数据库。wordpress安装是源代码的一个干净的解压缩副本,没有启用插件。它刚刚完成了初始设置。apache vhost被设置为允许所有版本,但这里的问题甚至不包括。htaccess正在写入,因为我确实看到wordpress正在更新。htaccess文件显示以下内容(但从不在其中添加规则):
# BEGIN WordPress
# END WordPress
我在wp内容/插件/测试插件/测试插件中创建了一个插件。php。
在逐渐删除代码片段后,我现在让它只运行测试插件文件中的以下代码:
function test_rules()
{
echo "test"; // Just to see that the function is being called
add_rewrite_rule(
\'^test/([0-9]+)/?\',
\'index.php?test=matches[1]\',
\'top\'
);
global $wp_rewrite;
$wp_rewrite->flush_rules();
var_dump($wp_rewrite->rewrite_rules());
}
add_action(\'init\', \'test_rules\');
显然,仅仅为了隔离重写API失败的地方,这是一段愚蠢的代码。当我加载站点的索引时,代码正在运行,因为我确实看到了“test”输出以及var\\u dump()输出。然而,在所有情况下,var\\u dump()输出都是一个没有值的数组。排序flush\\u规则的任何变化(或不使用它等)似乎都没有效果。
我还在数据库中查找,并从wp\\u选项中选择*,其中option\\u name=\'重写\\u规则\'。该行存在,但从未填充该选项的值。
我最初试图用现有代码在网站上设置这个,但现在我使用的是一个全新的裸体安装,只包含上面的插件(是的,它是活动的),我只是没有得到这些规则。有人能告诉我这里缺少什么吗?
谢谢