我将添加另一个答案,因为规则只是问题的一部分。
以下是我已经测试并正在工作的内容:
<?php
class BadRewritesRules {
public function __construct() {
add_action(\'init\', [$this, \'custom_post_types_rewrite_rules\']);
remove_filter(\'template_redirect\', \'redirect_canonical\');
}
public function custom_post_types_rewrite_rules() {
add_rewrite_rule(\'(blog)/([0-9-]+)[/]?$\', \'index.php?pagename=$matches[1]&paged=$matches[2]\', \'top\');
}
}
new BadRewritesRules();
实际上,我使用了另一个URL,您可以看到它在这里工作:
https://tests.pierre-roels.com/bad-rewrite-rules/2/您可以使用分页,也可以查看每个“;“成员”;用同样的子弹。
但正如我所说,我认为这是一个糟糕的解决方案,因为我们必须消除template_redirect
行动挂钩。最好是挂在Laravel部分,以正确的方式建立链接:(或者.htaccess
重新使用
每次更改时,不要忘记冲洗permalinks。要执行此操作,只需转到“设置”>;永久链接并提交页面
以下是解决方案。H访问。将此添加到。htaccess:
RewriteRule (blog)/([0-9]+)/? /$1/page/$2/ [R=301,L]
别忘了修正你的规则:
add_rewrite_rule(\'(blog)/page/([0-9-]+)[/]?$\', \'index.php?pagename=$matches[1]&paged=$matches[2]\', \'top\');
.
我为您做了另一个测试:https://tests.pierre-roels.com/blog/2/
此解决方案允许您不删除template_redirect
钩子,它将用户重定向到右端url