最近,我们将站点从纯php更新为cakephp 3,并且在将具有params的url重定向到新的url时遇到了困难。
例如,重定向工作很好。
$routes->redirect('/webcast.php', '/webcast', ['status' => 302]);
但是如果有参数,它就不起作用了
$routes->redirect('/webcast.php?id=100', '/webcast', ['status' => 302]);
有什么想法吗?
谢谢。
发布于 2016-08-30 08:30:37
路由器不支持查询字符串上的匹配,在检查匹配路由时传递给路由器的URL将不再附带任何查询字符串值。
虽然可以通过使用自定义路由分派器筛选器、自定义/扩展Router
类和自定义/扩展RouteCollection
类来解决这一问题,但对于一些很容易定义的东西,例如服务器级的重写规则,这似乎工作量太大。
Apache mod_rewrite
示例:
RewriteCond %{QUERY_STRING} ^id=100$
RewriteRule ^webcast\.php$ /webcast? [L,R=302]
请注意is usually the preferred redirect method。
另请参阅
https://stackoverflow.com/questions/39216483
复制相似问题