我从其他一些帖子中复制了以下代码。它成功地帮助我从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]
答案 0 :(得分:3)
在其他规则之前的上添加此规则,以跳过重写的所有POST请求:
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^ - [L]
答案 1 :(得分:0)
我想将user_login.php重定向到seo友好的网址,例如/ user-login和帖子表单数据,这对我有用。
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/user_login\.php [NC]
RewriteRule ^ user-login [QSA,R=301]
RewriteRule ^user-login$ user_login.php [QSA,L]
在视图文件
中<form action="<?php $siteurl;?>/user-login" method="post" id="user_login">