我们最近将我们的网站从纯 php 更新到 cakephp 3,并且无法将具有参数的 url 重定向到新的 url。
例如这个重定向工作正常
$routes->redirect('/webcast.php', '/webcast', ['status' => 302]);
但是如果有参数,它就不起作用
$routes->redirect('/webcast.php?id=100', '/webcast', ['status' => 302]);
有任何想法吗?
谢谢。
我们最近将我们的网站从纯 php 更新到 cakephp 3,并且无法将具有参数的 url 重定向到新的 url。
例如这个重定向工作正常
$routes->redirect('/webcast.php', '/webcast', ['status' => 302]);
但是如果有参数,它就不起作用
$routes->redirect('/webcast.php?id=100', '/webcast', ['status' => 302]);
有任何想法吗?
谢谢。
路由器不支持匹配查询字符串,在检查匹配路由时传递给路由器的 URL 将不再附加任何查询字符串值。
虽然可以通过使用自定义路由调度程序过滤器、自定义/扩展Router
类和自定义/扩展RouteCollection
类来解决此问题,但这对于可以轻松定义为例如重写规则的东西来说似乎工作量太大了服务器级别。
阿帕奇mod_rewrite
示例:
RewriteCond %{QUERY_STRING} ^id=100$
RewriteRule ^webcast\.php$ /webcast? [L,R=302]
请注意,这301
通常是首选的重定向方法。
也可以看看