【问题标题】:Cakephp 3.1 - How to redirect based on query string values?Cakephp 3.1 - 如何根据查询字符串值重定向?
【发布时间】:2016-08-29 23:05:56
【问题描述】:

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

例如这个重定向工作正常

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

但是如果有参数就不行了

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

有什么想法吗?

谢谢。

【问题讨论】:

    标签: cakephp redirect url-routing cakephp-3.1


    【解决方案1】:

    路由器不支持匹配查询字符串,在检查匹配路由时传递给路由器的 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

    另见

    【讨论】:

      猜你喜欢
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 2016-03-17
      • 1970-01-01
      相关资源
      最近更新 更多