【发布时间】:2023-04-07 05:46:02
【问题描述】:
所以我使用 mod_rewrite 将我的 get 查询 url 从 /news?news_id=6 重写为 /news/6。但是现在,当有人使用 get 方法提交表单时,我也希望能够这样做。现在,当您提交表单时,它仍将您定向到 /news/news_id=6 而不是 /news/6,我将如何清理获取查询 url?我很确定这不能使用 mod_rewrite 来完成(如果可以,请纠正我),所以我想你需要使用 Javascript 或 PHP。我一直在尝试用 PHP 做到这一点,到目前为止我已经完成了以下工作:
if (!empty($_GET['news_id'])) {
$redirecturl = "/news/" . $_GET['news_id'];
$redirecturl = str_replace(" ", "-", $redirecturl);
header('Location: ' . $redirecturl, true, 303);
die();
}
但是,这会导致浏览器出现错误,显示“localhost 将您重定向了太多次”。我将如何使用 PHP 完成这项任务?
谢谢。
【问题讨论】:
-
您更改了表单元素的 action 属性。虽然如果您的表单实际上使用 GET 请求,它会被您的重写规则更改。
-
我当前的表单元素看起来像这样
-
mod_rewrite 反过来工作:它重写在浏览器地址栏中输入的内容,或通过 into
news?news_id=6为您的网络服务器表单的操作作为链接发送。因此,将news/6付诸实施并在.htaccess 中将其重写为news?news_id=6 -
我想通了。我确信我能做到这一点的唯一方法是通过 PHP 或 JS。
-
你不能在你的 PHP 脚本处理完表单后重定向用户吗?
标签: php html apache mod-rewrite url-rewriting