PHP+PHPMailer部署Hostinger:.htaccess致表单失效求助
解决.htaccess导致联系表单失效的问题
一、先用上正确的.htaccess配置
要实现默认加载index.php,同时不影响contact.php这类实际存在的文件,核心是让重写规则只作用于不存在的文件/目录,配置如下:
RewriteEngine On # 仅当请求的文件或目录不存在时,才执行重写 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 将其他请求转发到index.php RewriteRule ^(.*)$ index.php [L]
之前的配置大概率没加前两行RewriteCond,导致所有请求(包括访问contact.php)都被强制转到index.php,表单自然提交失败。
二、检查表单提交路径
- 确保表单的
action属性用绝对路径,比如:
不要用相对路径<form action="/contact.php" method="POST">action="contact.php",启用重写后URL结构变化可能导致相对路径解析错误,请求无法到达正确文件。 - 如果是AJAX提交(对应你提到的custom.js),确认AJAX的请求URL也是绝对路径,比如:
$.ajax({ url: '/contact.php', method: 'POST', // 其他参数... });
三、清理多余的.htaccess文件
不要在public_html和子文件夹(比如publix)同时放置.htaccess,规则嵌套会导致冲突。只在网站根目录(比如public_html)保留一份配置即可。
四、快速调试定位问题
- 直接在浏览器访问
http://你的本地域名/contact.php,如果打不开,说明.htaccess规则拦截了这个请求,回去检查RewriteCond条件是否正确。 - 在contact.php开头加一行代码,测试是否能接收到表单数据:
提交表单后如果看不到POST数据,说明请求没到达contact.php,还是.htaccess的问题;如果能看到数据,再排查PHPMailer配置(但之前正常,这种概率极低)。var_dump($_POST); exit;
内容的提问来源于stack exchange,提问作者Jonypaul
相关产品推荐
相关产品推荐

