【发布时间】:2021-12-01 20:40:48
【问题描述】:
到处都有类似问题的帖子,但在我的情况下没有一个有效。 我想在重写 URL 时保留 POST 数据。
在我的 .htaccess 文件中,我有
RewriteRule ^blogs/([a-z0-9]+)$ blog-details.php?blog=$1 [L]
提交此页面上的表单时,我得到一个空数组。如何使用此 url 重写规则保留 POST 数据。 提前感谢您的建议。
[编辑] 这可能是由于从 url 中删除了 php 扩展名的情况。在 RewriteEngine On 之后,我在 .htaccess 文件的开头有这些规则。
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]
完整的.htaccess文件如下:
RewriteEngine on
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]
RewriteRule ^blogs/([a-z0-9-]+)$ blog-details.php?blog=$1 [L]
当我重写其他此类网址时,我也遇到了同样的问题。 有人可以在这种情况下提出解决方案。提前感谢您的建议和 cmets。
【问题讨论】:
-
感谢分享您的努力,您能否详细说明一下
How can I preserver the POST data with this url rewrite rule一次?谢谢。 -
$_POST数组不会因内部重写而丢失。您可能有其他问题导致完全重定向(浏览器中的 URL 更改) -
“当我重写其他此类网址时,我也遇到了同样的问题。” - 你指的是 POST 请求吗?请举个例子。
-
是的,我指的是 POST 请求。例如,我通过他们在数据库中的 ID 获取业务信息(或用户信息),当我想更新信息时,数据会丢失在某处。我通过 POST 方法发送数据。 .htaccess 文件有类似的东西。 RewriteRule ^user-details/([0-9]+)$ userdetails.php?userid=$1 [L] 或 RewriteRule ^business-details/([0-9]+)$ business.php?bid=$1 [L] ]。当我想显示 POST 数据时,结果是一个空值数组。 print_r($_POST) -> 数组()。或者 var_dump($_POST) -> array(0) { }.
-
那些是内部重写,它们不会导致 POST 数据丢失。你有任何其他指令或任何其他
.htaccess文件吗?你有任何规范的重定向吗?