我试图修改已经经过大量修改的Joomla环境。我不是Joomla开发人员,所以可以这么说,我在荒野中有点迷失。
基本上,该网站的 99% 由访问级别 = 已注册的文章组成。当您点击其中一篇文章的URL时,Joomla会重定向到身份验证页面。这是有道理的,除了原始文章的URL丢失,因此登录后,您将被重定向回主页,而不是最初想要的文章。
现在,我可以看到错误.php页面已使用代码进行了修改以拦截 403 错误,这看起来应该可以工作。但是,不知何故/某处 Joomla 以其他方式重定向到身份验证页面,并且从未抛出过 403。
所以我的问题是,Joomla 如何执行重定向到身份验证页面(顺便说一句,一个自定义插件(,Joomla 是否有办法抛出 403 错误,以便我可以使用已经编码的逻辑错误.php。
提前致谢
ps 它是 Joomla 1.5.23 和 PHP 5.2.17
Joomla! 1.5 使用了一个相当全面的.htaccess
文件,正如 Joel 所说,这发生在 Joomla!
标准的Joomla!1.5安装将在用户登录后重定向到正确的内容,如果相关组件编写正确(如文章的标准com_content
(。我将首先查看为什么它不起作用,例如,由于某种原因是否修改了身份验证检查。
Joomla!1.5通常通过将return
参数(base64编码(附加到用于调用com_user
的URL来执行此操作,您可以在大多数组件中找到这样的代码来检查用户是否具有访问权限,如果没有重定向他们。
if (($contact->access > $user->get('aid', 0)) || ($contact->category_access > $user->get('aid', 0))) {
$uri = JFactory::getURI();
$return = $uri->toString();
$url = 'index.php?option=com_user&view=login';
$url .= '&return='.base64_encode($return);
$mainframe->redirect($url, JText::_('You must login first') );
}
HTTP 级别出现 403 错误。当用户尝试访问他无权访问的服务器的一部分时,会引发此问题。这些权限与Joomla权限完全不同。大多数情况下,403 错误仅来自 .htaccess 文件中的限制,或者脚本告诉服务器抛出 403 错误(请参阅下面的代码(。
我不是Joomla专家,但是当用户转到身份验证页面时,您应该能够抛出403错误。这个PHP代码应该可以解决问题:
header("HTTP/1.0 403 Forbidden");
希望这对你有帮助。