You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress Contact Form 7多语言页面AJAX提交报错问题求助

问题根因

Weglot的多语言URL重定向规则拦截了Contact Form 7(简称CF7)的REST API提交请求:

  • 翻译页面的CF7 AJAX请求发送到根路径/wp-json/xxx时,Weglot会自动301重定向到带语言前缀的路径(比如/de/wp-json/xxx)
  • 301重定向会自动把POST请求转为GET请求,而CF7的提交接口仅支持POST方法,因此返回404路由不存在错误,多次跳转就触发了重定向过多报错

可行解决方案(按优先级排序)

方案1:配置Weglot排除REST API路径(首选)

这是最简单无侵入的方案:

  1. 进入WordPress后台 → Weglot → 高级设置
  2. 找到「要排除的URL」配置项,添加规则/wp-json/*
  3. 保存设置后清空Weglot缓存、站点缓存、浏览器缓存再测试即可

方案2:手动修改CF7提交接口路径(方案1无效时用)

将以下代码添加到当前主题的functions.php文件,或通过代码片段插件引入,强制CF7使用无语言前缀的根路径接口:

add_filter( 'wpcf7_feedback_rest_url', function( $rest_url, $form ) {
    // 强制返回根域名下的CF7提交接口,不受语言前缀影响
    return home_url( '/wp-json/contact-form-7/v1/contact-forms/' . $form->id() . '/feedback' );
}, 10, 2 );

方案3:修改.htaccess规则优先放行REST API请求

如果是服务器重定向规则优先级问题,在现有.htaccess的RewriteEngine On下方添加一行规则,优先放行所有wp-json请求:

<IfModule mod_rewrite.c>
RewriteEngine On
# 新增下面这行,优先处理REST API请求,不参与多语言重定向
RewriteRule ^wp-json(/.*)?$ - [L]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

修改完保存后重启Apache(或重载配置),清空缓存测试即可。

内容的提问来源于stack exchange,提问作者JaKoZo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:36:03