首页 > 解决方案 > 如何将 $_POST 与 URL 重写一起使用?

问题描述

我的代码有问题。我想重写我的 URL(将 %20 更改为连字符)。

所以我在我的 .htaccess 中写了这个:

<IfModule mod_rewrite.c>
 Options +FollowSymLinks
 RewriteBase /
 RewriteEngine On

 RewriteRule ^([^\s%20]+)(?:\s|%20)+([^\s%20]+)((?:\s|%20)+.*)$ $1-$2$3 
 [N,DPI]
 RewriteRule ^([^\s%20]+)(?:\s|%20)+(.*)$  $1-$2 [L,R=301,DPI]

 RewriteRule ^admin/ bootstrap.php?app=Backend [QSA,L]

 RewriteCond %{REQUEST_FILENAME} !-f

 RewriteRule ^(.*)$ index.php?app=Frontend [QSA,L]
</IfModule>

它按预期工作:

我的网址从:/news/The%20History%20of%20Cryptocurrency_3 更改为:/news/The-History-of-Cryptocurrency_3

但是出于我无法理解的原因:提交表单时我丢失了 $_POST 变量...

==> 删除重写规则时,代码正在运行:我可以提交对新闻的评论并获取 $_POST 变量。但如果我把这些规则,然后 $_POST 显示:array(0){}....

这是表格:

<form method="post" action="/news/<?= $news['title'] ?>_<?= $news['id'] ?>" class="needs-validation" novalidate>

我该如何解决这个问题?

标签: phpregexapache

解决方案


推荐阅读