使用PHP

时间:2019-03-01 22:36:09

标签: php html apache mod-rewrite url-rewriting

因此,我已经使用mod_rewrite将我的get查询网址从/ news?news_id = 6重写为/ news / 6。但是现在,我希望当有人使用get方法提交表单时也能做到这一点。现在,当您提交表单时,它仍将您定向到/ news / news_id = 6而不是/ news / 6,我将如何清理get查询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();
}

但是,这会导致浏览器出现错误,提示“本地主机重定向您太​​多次”。我将如何使用PHP完成此任务?

谢谢。

1 个答案:

答案 0 :(得分:0)

不确定,但是必须是“获取”表格吗?如果您想要一个干净的URL,这将是post方法的一个非常简单的示例(无需任何安全检查!)。如果在同一页面上,可以将“操作”留空:

表单代码:

<form action="" method="post">
    [Other form code ]
    <input type="hidden" name="news_id" value="6" />
</form>

处理代码:

if ($_POST && !empty($_POST['news_id'])) {
    // Do what you want with: $_POST['news_id'];
}

此外,您可以在处理表单处理的地方创建一个新的mod_rewrite,例如:/ news6 / process。出于安全原因,这样做会更好,并且您的代码会更简洁。完成处理后,在'/ news / 6'上设置一个会话变量以使用户知道处理是否完成。