Cakephp 3.1 - 如何根据查询字符串值重定向?

问题描述 投票:0回答:1

我们最近更新了我们的网站从纯PHP到cakephp 3,并且无法将具有参数的网址重定向到新的网址。

例如,此重定向工作正常

$routes->redirect('/webcast.php', '/webcast', ['status' => 302]);

但如果有参数,它就不起作用

$routes->redirect('/webcast.php?id=100', '/webcast', ['status' => 302]);

有任何想法吗?

谢谢。

cakephp redirect url-routing cakephp-3.1
1个回答
0
投票

路由器不支持查询字符串匹配,检查匹配路由时传递给路由器的URL将不再附加任何查询字符串值。

虽然可以通过使用自定义路由调度程序过滤器,自定义/扩展Router类以及自定义/扩展RouteCollection类来解决此问题,但对于可以轻松定义的内容(例如重写)来说,这似乎太过分了。服务器级别的规则。

Apache mod_rewrite示例:

RewriteCond %{QUERY_STRING} ^id=100$
RewriteRule ^webcast\.php$ /webcast? [L,R=302]

并注意到301 is usually the preferred redirect method

也可以看看

© www.soinside.com 2019 - 2024. All rights reserved.