forms - 为什么我的表单在 .htaccess URL 重写后不起作用?

标签 forms apache .htaccess mod-rewrite url-rewriting

我从其他一些帖子中复制了以下代码。它成功地帮助我从 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/

相关文章:

apache - 如何创建 VirtualHost 以仅提供静态内容

php - Codeigniter SEO 友好的 URL 重写

ruby-on-rails - 如何从 ruby​​ on Rails Controller 中的 f.select 标签获取选定值

apache - mod_rewrite 重写规则不起作用

html - 在 iOS 版 Safari 中使用“开始”按钮提交表单

linux - 在局域网中配置 LAMP 网络服务器

.htaccess - Google 使用 BLEXBot 爬虫吗?

.htaccess - 拒绝来自除一个域之外的所有域的推荐

php - 实现没有刷新警报的 PHP 和 MySQL

forms - ZF2 - 工厂调用创建的表单需要传递给服务的 url 参数