似乎您不应该根据过滤标签的初始提交进行任何搜索。如果您通过一次搜索控制器然后重定向,您最终会执行两次搜索。
如果用户提交标签进行过滤,则仅使用这些标签来构建 URL 并直接重定向到包含过滤标签的 URL。由于您说它转到同一个搜索控制器,因此随后只会启动一次正确的搜索,并且用户的 URL 已经是您想要的最终结果。
因此,只需从中检索过滤后的标签$_POST
并立即重定向到触发正确搜索的最终结果 URL。
伪 PHP
$valid_tags = array_filter($_POST['tags'], function($t) {
// validate tags as alphanumeric (substitute the appropriate regex for your tag format)
// this discards non-matching invalid tags.
return preg_match('/^[a-z0-9]+$/i', $t);
});
// Don't forget to validate these tags in the search controller!
// Implode the tags (assuming they are received as an array) as a space separated string
// and urlencode() it
$tags = urlencode(implode(" ", $valid_tags));
header("Location: http://example.com/news/$tags");
exit();