您已为joomla创建了一个error.php,可将404错误重定向到joomla文章。下面的代码适用于404错误,但403返回空白页面。我可以直接在我的脚本之外导航到页面,因此它必须是我的代码或它在环境中的交互方式。
由于 斯蒂芬
defined( '_JEXEC' ) or die( 'Restricted access' );
if ($this->error->code == 404)
{
Header( "HTTP/1.1 404 Not found" );
header("Location: http://www.queensberry.com/misc/filenotfound/");
} else if ($this->error->code == 403) {
Header( "HTTP/1.1 403 Restricted Content" );
Header( "Location: http://www.queensberry.com/restrictedcontent/" );
} else {
echo "hello world error code = " . $this->error->code;
}
?>
答案 0 :(得分:6)
您应该使用Header("Loaction:...")
或其他类似内容呈现“受限制内容”页面,而不是使用include()
,然后退出。收到最有可能的403后,浏览器不会跟随位置标题。
答案 1 :(得分:5)
我感谢大家的帮助,但答案却让我朝着我所希望的方向发展。我想继续使用Joomla的error.php文件作为Joomla错误的目的地,但不是将页面格式化为看起来像是我想重定向到Joomla内容的网站的一部分。
最后我发现我需要的是出口;在我的脚本中。所以这是error.php,因为它现在正在工作。
defined( '_JEXEC' ) or die( 'Restricted access' );
if ($this->error->code == 404)
{
Header( "HTTP/1.1 404 Not found" );
header("Location: http://www.queensberry.com/misc/filenotfound/");
exit;
} else if ($this->error->code == 403) {
Header( "HTTP/1.1 403 Restricted Content" );
Header( "Location: http://www.queensberry.com/restrictedcontent/" );
exit;
} else {
echo "hello world error code = " . $this->error->code;
}
?>
答案 2 :(得分:1)
标题(“位置:”)导致标准重定向到新页面。 403错误仅在PHP呈现的页面上发送。因此,您有效地试图说(使用您发布的代码)“当前页面导致403错误”,但随后您将完全重定向到完全不同的页面。将403标题添加到http://www.queensberry.com/restrictedcontent/,您应该很好。您还需要对404标题执行相同的操作。
答案 3 :(得分:1)
如果(HTTP / 1.1 403),那么网络浏览器(Firefox,IE,Chrome,...)将忽略无论
位置:( bla bla bla)是。
不相信?
假设::您知道如何从Joomla站点生成错误代码403。 (我的意思是joomla_site / bla-bla-bla ::产生错误代码403)
让我们问一下 Web服务器是否给出了(基于你的error.php文件),如下所示:
... HTTP / 1.1 403受限制的内容 地点:http://www.queensberry.com/restrictedcontent/ ...
这些是基于你的error.php文件(我的意思是你的error.php文件可以按你的意愿工作)
- 使用telnet 80检查
我们试试
c:\ telnet your_host:80
获取bla-bla-bla HTTP / 1.1
主持人:joomla_site
- 希望这能满足你的好奇心: - )
我再说一遍:
如果(HTTP / 1.1 403),那么网络浏览器(Firefox,IE,Chrome,...)将忽略无论
位置:( bla bla bla)是。