Mod rewrite Mod_重写导致联系人表单无法工作

Mod rewrite Mod_重写导致联系人表单无法工作,mod-rewrite,url-rewriting,file-extension,Mod Rewrite,Url Rewriting,File Extension,我有一个网站,有一个联系人,过去工作得很好 我已经把范围缩小到导致表单无法工作的mod_重写规则 # If client requested does not exist as a directory or a file # then add .php to the actual filename RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*)$ $1.php

我有一个网站,有一个联系人,过去工作得很好

我已经把范围缩小到导致表单无法工作的mod_重写规则

# If client requested does not exist as a directory or a file
# then add .php to the actual filename
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

# Gets rid of the file extensions in the address bar
# If client request header contains php file extension
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.php\ HTTP
# externally redirect to extensionless URI
RewriteRule ^([^.]+)\.php$ http://cacrochester.com/$1 [R=301,L]

如何修改它,使其不会影响页面上的联系人表单,但仍会删除地址栏中的扩展名?

使该表单指向不带.php的URL


指向
http://www.cacrochester.com/Contact-Us
而不是
http://www.cacrochester.com/Contact-Us.php

到底是什么问题?脚本是否没有获取表单数据?找不到脚本吗?当我注释掉这些mod规则并在表单上单击submit时,它会显示错误消息。当我取消对问题中的规则的注释,然后单击表单上的“提交”按钮时,它看起来只是刷新页面,没有显示错误消息。我可以想象301 perm重定向将删除(某些/大多数?)浏览器的表单数据。检查其他浏览器,或者您的浏览器是否发送表单数据以及最终url上的请求。我应该做什么来代替301重定向?还有什么方法可以让URL不显示文件扩展名呢?最好的方法是更正链接。如果您使用的是CMS,那么在生成URL时,CMSs的任务就是这样做。一个简单的修复方法是告诉联系人脚本表单指向正确的url,而不是具有文件扩展名的url。你也可以为这一个脚本做一个例外。哦,好吧,难道没有一个用于删除文件扩展名的Web服务器吗?至少对于ApacheHTTPD!?表单提交给自身$\u SERVER['PHP\u SELF'],然后不要使用
$\u SERVER['PHP\u SELF']
,因为这样会再次添加.PHP。或者通过substr($\u SERVER['PHP\u SELF',0,strrchr($\u SERVER['PHP\u SELF','))之类的方式删除它。哦,我认为这是有道理的。我不知道向自己提交一个页面会添加.php。你能解释一下我在哪里使用你的代码吗?在提交表单时,是否将其放入$\u服务器变量或其他变量中?无论您在哪里输出HTML
action属性。
echo'之类的。