WordPress:通过URL重写覆盖或绕过自定义帖子类型的重定向规则

WordPress:通过URL重写覆盖或绕过自定义帖子类型的重定向规则,wordpress,redirect,rewrite,Wordpress,Redirect,Rewrite,-我使用了一些WordPress重写规则,允许在URL路径的开始处立即注入国家代码,用于确定时区偏移量。例如: add_rewrite_rule('^([A-Za-z]{2})/days/([0-9]+)/?$', 'index.php?geo=$matches[1]&m=$matches[2]&post_type=days','top'); 这需要像www.daysoftheyear.com/days/2011/(通常会返回此请求的所有有效内容)这样的请求,并允许(例如)ww

-我使用了一些WordPress重写规则,允许在URL路径的开始处立即注入国家代码,用于确定时区偏移量。例如:

add_rewrite_rule('^([A-Za-z]{2})/days/([0-9]+)/?$', 'index.php?geo=$matches[1]&m=$matches[2]&post_type=days','top');
这需要像www.daysoftheyear.com/days/2011/(通常会返回此请求的所有有效内容)这样的请求,并允许(例如)www.daysoftheyear.com/us/days/2011/返回相同的内容,但支持基于国家代码的时区偏移

这在几乎所有的地方都可以很好地工作,除了单一的查询类型-一个用于“天”自定义帖子类型页面,例如

我制定的规则是:

add_rewrite_rule('^([A-Za-z]{2})/?$', 'index.php?geo=$matches[1]','top');
add_rewrite_rule('^([A-Za-z]{2})/days/([0-9]+)/?$', 'index.php?geo=$matches[1]&m=$matches[2]&post_type=days','top');
add_rewrite_rule('^([A-Za-z]{2})/days/([0-9]+)/([0-9]+)/?$', 'index.php?geo=$matches[1]&m=$matches[2]$matches[3]&post_type=days','top');   
add_rewrite_rule('^([A-Za-z]{2})/days/([0-9]+)/([0-9]+)/([0-9]+)/?$', 'index.php?geo=$matches[1]&m=$matches[2]$matches[3]$matches[4]&post_type=days','top');
add_rewrite_rule('^([A-Za-z]{2})/days/([A-Za-z\-].*)/?$', 'index.php?geo=$matches[1]&page=$matches[2]','top');
add_rewrite_rule('^([A-Za-z]{2})/([A-Za-z\-].*)/?$', 'index.php?geo=$matches[1]&pagename=$matches[2]','top');
第五条规则应该以与上面相同的方式匹配,但是重定向-我怀疑它与内置规则冲突,内置规则试图重定向到正确的URL,如果格式不正确(例如,如果我键入与正确URL的紧密结构匹配,它会将我重定向到正确的资源)

我可以确认此请求的“原始”URL有效-例如,返回有效的预期结果

我不相信这是一个正则表达式规则,而不是WP管理自定义帖子类型的具体挑战

编辑

更新为允许连字符-行为没有变化,尽管regexpal报告说regex针对示例URL工作

禁用WP canonical重定向功能后更新-现在是404'ing而不是301'ing到页面

根据此处的信息,更新为使用“页面”而不是“页面名”:行为无变化


更新了代码,添加了换行符,并澄清我实际上是在引用第5行,而不是第4行。

此请求
http://www.daysoftheyear.com/days/waffle-day/
将不符合您的第四条规则,因为您不允许在组cature:
([A-Za-z].*)
中使用
-
。将此组替换为
([A-Za-z\-].*)
,它应该匹配。

HTH

此请求
http://www.daysoftheyear.com/days/waffle-day/
将不符合您的第四条规则,因为您不允许在组cature:
([A-Za-z].*)
中使用
-
。将此组替换为
([A-Za-z\-].*)
,它应该匹配。

HTH已解决;看来上述规则集现在可以正常工作了-谢谢大家

已解决;看来上述规则集现在可以正常工作了-谢谢大家

好地方,谢谢!然而,这似乎并没有解决问题。怀疑我仍然与重定向到规范逻辑的内容相冲突?很好,谢谢!然而,这似乎并没有解决问题。怀疑我仍然与重定向到规范逻辑的内容相冲突?在您的规则列表中,您有两次调用第3行的
add_rewrite_rule
-这是否意味着“第四条规则”是第三行的第二条规则,还是第4行的规则?!对不起,粘贴时输入错误。通过将双重规则分为两行进行澄清。事实上,我引用的是第5行。在你的规则列表中,有两个调用在第3行添加重写规则-这是指“第四条规则”是第三行的第二条规则还是第4行的规则?!对不起,粘贴时输入错误。通过将双重规则分为两行进行澄清。事实上,我指的是第5行。