在 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 会破坏联系表单 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 URL 获取值并将其添加为联系表 7 中的隐藏字段

在提交 IFRAME 表单之前,将父 url 保存到隐藏字段

php 过滤以在提交或重定向时从URL中删除联系表单7查询字符串。进入函数文件。

如何更改联系表单 7 的表单操作 url?

是否有一个简单的解决方案可以将 PHP 联系表单重定向回我的网站? [复制]

URL重写在末尾添加斜杠会破坏我的css链接