我在Zend Framework 2中有重定向的奇怪问题,但我认为框架在这里并不重要,因为它在localhost上正常工作。我试图解决这个问题2天。
在我的本地主机上,我的第一个Zend 2应用程序非常出色,所以我决定将它移到实时服务器上,然后就来了。
我的一个动作是:
public function unknowAction()
{
...
//var_dump($obj->getLink()); // Return string with url address
$this->redirect()->toUrl($obj->getLink());
//return false; // Tried with and without this
}
正如我所提到的,在localhost上它工作得很完美,但在实时服务器上它不会重定向到提供的URL。
在实时服务器上面的操作返回HTTP请求代码302,但它保持在同一页面上。就像阻止它的东西一样。
我用:
创建了php文件<?php
header('Location: http://www.google.pl',true,302);
?>
只是为了检查我的服务器是否有某种方式没有禁用重定向,但是这个脚本重定向没有任何问题。
我在index.php
中添加了顶部ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
但我没有错误,没有警告,一切似乎都没问题。
所以这是我向Stackoverflow专家提出的问题 什么阻止重定向?我应该在哪里看?我该怎么检查?
这是.htaccess,它是Zend 2的标准,只是第一个,最后两行由我添加。
AddHandler x-httpd-php5-3 .php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
RewriteRule index.php / [L]
php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0
更新 在我的行动中,我尝试了:
public function unknowAction()
{
...
return $this->redirect()->toUrl($obj->getLink());
}
这样我得到空白页面,哪个浏览器以Quirks模式显示。我在Firebug中检查了这个,作为回应我在html结构的顶部跟随字符(它是不可见的)
ďťż
目前,我正在寻找文件中的BOM。
答案 0 :(得分:0)
你试图逃避给定的链接吗?或者不是从对象提供链接,而是尝试重定向到硬编码的URL。