我从其他一些帖子中复制了以下代码。它成功地帮助我从 URL 中删除了 .php 扩展名。但是,实现此操作后,我的表单不再有效。我有张贴类似 <form method='post' action='login.php' ...
的表格。现在,当我提交表单时,它不会将数据发送到该位置。我意识到如果我改变 action='login.php'
至action='login'
,表格将再次起作用。但我的网站中有许多页面包含发布到不同位置的表单,我不想手动更改其中很多页面。所以我想知道为什么数据没有按预期发布以及如何解决该问题。谢谢!
RewriteEngine On
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://localhost/domainname/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{REQUEST_FILENAME} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://localhost/domainname/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://localhost/domainname/$1 [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]
最佳答案
将此规则添加到顶部其他规则之前,以跳过重写的所有 POST 请求:
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^ - [L]
关于forms - 为什么我的表单在 .htaccess URL 重写后不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560586/