已经提出了这个问题的各种变体,但是场景与我的不匹配,尽管我付出了努力,但我仍然无法在我的用例中采用之前的工作解决方案的答案。
我有一个页面模板,其中内置了javascript应用程序。该应用程序使用URL中的最后一个参数作为ajax请求的参数,并运行该请求,然后为其生成结果。
由于SEO问题和客户端要求,我无法更改或改变此请求语法的工作方式,因此我必须在Wordpress中工作(页面是从Ruby应用程序转换而来的)
当客户请求:
https://www.wordpresssite.com/service/testing-tool/domain.com
我需要在以下位置使用模板生成的页面进行响应:
https://www.wordpresssite.com/service/results
这一部分我在中使用了以下重写规则
.htaccess
RewriteRule ^service/testing-tool/([a-z0-9.]+)$ /index.php?pagename=service/results [NC,L]
重写工作正常,但WordPress会将浏览器中的URL更改为
https://www.wordpresssite.com/service/results
这会导致JS失败,因为缺少域参数,而且它也不符合前面提到的要求。
我认为在这里做了一些研究之后,问题是redirect\\u canonical()操作,所以我尝试从模板中删除它:
// Disable redirect_canonical()
add_action( \'init\', \'results_tweaks\' );
function results_tweaks()
{
remove_action( \'template_redirect\', \'redirect_canonical\' );
}
然而,这似乎没有做到这一点。阅读WP文档,我怀疑这是因为在页面加载时操作已经被处理。
是否有其他方法可以专门针对此模板覆盖此操作,而无其他方法?也许除了删除操作之外还有其他方法?