You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WordPress多页面PHP表单异常:Page2提交后Page3出现404错误

解决WordPress表单提交后跳转到404页面的问题

这种表单提交后跳404的情况在WordPress里真的挺闹心的,尤其是明明页面存在却跳不过去,我帮你梳理几个大概率能解决问题的方向:

1. 先把表单的action路径改稳

你Page2的路径是offer/details/,如果表单用的是相对路径action="results/",理论上会指向目标页面,但WordPress的固定链接偶尔会出现解析偏差,不如直接用绝对路径更靠谱。把表单的action改成:

action="<?php echo esc_url(home_url('/offer/details/results/')); ?>"

同时别忘了去WordPress后台确认页面层级:确保results页面是details页面的子页面,这样路径结构才完全匹配。

2. 刷新WordPress的固定链接规则

这是解决路径类404的常用小技巧:

  • 登录WordPress后台,进入「设置」→「固定链接」
  • 先随便选一个不同的规则(比如「朴素」),点击保存
  • 再改回你原来用的规则(比如「文章名」),再次保存
    这样会强制刷新WordPress的重写规则,很多路径解析的小问题都能靠这个解决。

3. 检查Page3的处理逻辑和权限

如果Page3是用来接收表单数据的,要确保:

  • 它的页面状态是「发布」,不是草稿或私密状态
  • 如果用了自定义页面模板,模板里没有拦截POST请求的代码(比如错误的条件判断,或者只允许GET请求)
  • 提交表单的用户有访问Page3的权限(如果是会员专属页面的话)

4. 排查插件或主题冲突

安全插件(比如Wordfence)、缓存插件甚至主题本身的重写规则都可能拦截表单提交:

  • 先暂时禁用所有插件,切换到WordPress默认主题(比如Twenty Twenty-Four)
  • 测试表单提交,如果能正常跳转到Page3,再逐个启用插件和主题,找出搞事情的那个

5. 检查Apache服务器的.htaccess文件(如果用的是Apache)

如果你的服务器是Apache,.htaccess里的重写规则可能出了问题。先备份原文件,然后替换成WordPress默认的规则试试:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

替换后刷新页面,再测试表单提交。

你可以先从调整表单action路径和刷新固定链接开始,这两个是最常见的触发原因,大概率能解决问题。

内容的提问来源于stack exchange,提问作者Grey-lover

火山引擎 最新活动