wordpress add_rewrite_rule未显示预期的页面

问题描述

我正在尝试使用wordpress重写规则为正在开发的插件配置路由。我正在从为插件创建的类中调用代码-我正在使用的代码是:

function __construct() {
    add_action('init',array($this,'category_rewrite_rule'),10,0);
}

function category_rewrite_rule() {
    add_rewrite_rule(
        '^products/([^/]*)/?','index.php?category=$matches[1]','top'
    );
}

它应该使用domainname.com/products/garden之类的网址并显示/index.php?category=garden,但此刻它会显示该网站的主页。如果我直接导​​航到/index.php?category=garden,则可以看到预期的页面。

我知道代码正在运行,因为我在类中还有其他可以正常工作的函数,所以我也可以将die()放在可以正常工作的重写函数中。

每次更改代码后,我一直按“ WP设置->永久链接”页面上的“保存”以刷新链接。

我当时想这可能是我本地开发环境遇到的一个问题;我正在使用Laravel Valet在Mac上工作,并且我还注意到站点根文件夹中没有.htaccess文件。我尝试手动创建一个(使用默认的WP代码),但没有帮助。

编辑:今天下午,我使用Laravel Forge设置了一个Wordpress网站并在其上安装了我的插件,但是我仍然遇到相同的问题,所以也许毕竟不是服务器环境:(

编辑2:我已经在VM上设置了一个LAMP堆栈,并且代码可以正常工作,因此使用Laravel Valet / Forge(Nginx)绝对可以。

有人能帮忙吗?

谢谢

解决方法

正如我在编辑中所怀疑的那样,问题是因为我的本地和第一台测试服务器分别使用Laravel Valet和Laravel Forge。

我意识到这是问题所在,因为当我尝试在VM上使用LAMP堆栈时,代码可以按预期工作。

最后,我意识到我必须手动将重写规则添加到我的Nginx配置中,以使它们起作用,因为在服务器使用Nginx时无法使用Wordpress的add_rewrite_rule函数。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...