在 URL 中隐藏 .php 会破坏联系表单 [关闭]
Posted
技术标签:
【中文标题】在 URL 中隐藏 .php 会破坏联系表单 [关闭]【英文标题】:Hiding .php in URL breaks contact form [closed] 【发布时间】:2021-04-01 12:29:28 【问题描述】:我有一个功能齐全的网站,其中包含许多不同的联系表格。
我使用 .htaccess 文件将 .php 隐藏在 URL 中每个页面名称的末尾,但是当我这样做时,联系表格会中断。还有其他隐藏这些后缀的方法吗?
非常感谢
【问题讨论】:
通过编辑问题显示您的 .htaccess。您的表单是否使用POST
方法?
是的,使用 POST。下面是htaccess文件: RewriteEngine on RewriteCond %THE_REQUEST /([^.]+)\.php [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %REQUEST_FILENAME.php -f RewriteRule ^ %REQUEST_URI.php [NC,L]
请“编辑您的问题”(如 anubhava 建议的那样)添加您的 .htaccess
文件的内容。在评论中发布未格式化的代码(尤其是正则表达式)可能会忽略显示中的特殊字符并使代码示例无用。
还有,“联系表”是怎么调用的,终点是什么?
【参考方案1】:
您应该跳过来自重定向规则的POST
请求,如下所示:
RewriteEngine On
RewriteCond %REQUEST_METHOD !POST
RewriteCond %THE_REQUEST \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]
RewriteCond %DOCUMENT_ROOT/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
现代浏览器支持HTTP status code 308,不会将POST
请求更改为GET
,因此您可以使用第一条规则:
RewriteCond %THE_REQUEST \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=308,NE,L]
【讨论】:
以上是关于在 URL 中隐藏 .php 会破坏联系表单 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在提交 IFRAME 表单之前,将父 url 保存到隐藏字段
php 过滤以在提交或重定向时从URL中删除联系表单7查询字符串。进入函数文件。