【问题标题】:CakePHP Redirect to external absolute URLCakePHP 重定向到外部绝对 URL
【发布时间】:2013-01-24 22:26:41
【问题描述】:

在 CakePHP 中,$this->redirect 可以很好地重定向到带有内部 url 的内部页面。有没有办法将用户重定向到外部页面?

例如: $this->redirectTo('http://google.com');

【问题讨论】:

  • header("Location: http://google.com") 是一种选择,假设事先没有发送任何输出。

标签: php url cakephp redirect cakephp-2.0


【解决方案1】:

$this->redirect() 也适用于外部 URL。

$this->redirect('http://www.example.com');

http://book.cakephp.org/2.0/en/controllers.html#flow-control

【讨论】:

  • 由于某种原因这对我不起作用。这是一个示例:$this->redirect('http://google.com'); 将我重定向到 http://www.mysite.comhttp//google.com
  • 已测试;使用最新版本的 CakePHP 对我来说效果很好。它似乎将其视为相对 URL;仔细检查是否有任何拼写错误。
  • 没有错别字。我真的不知道问题是什么。它似乎正在使用您放置和删除冒号的任何字符串,然后将其视为相对 url。
  • redirect() 本质上是在调用header("Location: " . Router::url('http://google.com', true)); exit;。如果((strpos($url, '://') !== falseRouter::url() 应该简单地返回未触及的 URL。你能测试一下Router::url('http://google.com', true)); 的返回值吗?检查strpos($url, '://') 也可能很好。如果这两个看起来都不错,我不知道除了不稳定的 CakePHP 安装或其他东西之外,还有什么可能与 beforeRedirect 方法混淆。
  • 啊,是的,我现在明白了。我意识到有一个 beforeRedirect 方法用于处理负载均衡器和安全请求。感谢您指出我的方向! $this->redirect() 工作
【解决方案2】:

试试这个。

$this->redirect('http://www.google.com', null, true);

【讨论】:

  • 这不起作用。第二个参数应该是状态码。
  • nulltrue 分别是默认的第二个和第三个参数。这与:$this->redirect('http://www.google.com'); 相同
猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 2019-10-23
相关资源
最近更新 更多