在ZF2中,我知道我可以使用如下附加的查询字符串创建301重定向:
$options = [
'query' => [
'string' => 'hello world',
]
];
return $this->redirect()
->toRoute('myRoute', [], $options)
->setStatusCode(301);
但是,这会重定向到附加了hello%20world
的网址。在ZF2中,有没有办法编写此重定向,并附加hello+world
?
答案 0 :(得分:2)
由于ZF2不使用urlencode
而不是rawurlencode
提供使用查询字符串重定向的本机函数,因此我们编写了一个重定向的自定义方法。不是很漂亮,但现在解决了我们的问题:
private function redirectToPageFive($query)
{
$location = ($_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://')
. $_SERVER['HTTP_HOST']
. '/search?query='
. urlencode($query)
. '&page=5';
header("Location: $location", true, 301);
exit;
}
答案 1 :(得分:1)
您的网址正常url_encode
d。它和#34;转变了#34;放入URL的有效字符。
在接收端,您的"hello%20world"
将自动收到"hello world"
。
无需修复,代码按预期工作。