我们最近将我们的网站从纯php更新为cakephp 3,并且无法将具有参数的网址重定向到新网址。
例如,此重定向工作正常
$routes->redirect('/webcast.php', '/webcast', ['status' => 302]);
但是如果有参数,它就不起作用
$routes->redirect('/webcast.php?id=100', '/webcast', ['status' => 302]);
有什么想法吗?
感谢。
答案 0 :(得分: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。
另见