Joomla 403重定向代码

时间:2016-04-08 15:07:34

标签: php .htaccess joomla

我在检测到403时让Joomla 3将用户重定向到成员页面时遇到问题。

经过几天的研究和尝试各种事情,我终于不得不提出这个问题。

根据我的研究,我了解Joomla从templates/system/error.php主文件中读取。

我在error.php中实施了以下代码,并且我也尝试通过.htaccess强制执行此代码,但两者都无效。

$ReferTo = $_SERVER['REQUEST_URI'];
$ReferTo = base64_encode($ReferTo);

if ($this->error->getCode() == '403') {
header('Location: ' . $this->baseurl . '/members'); die();
}

目前的行为是Joomla只是将用户发送到一个非常无用的403默认页面。

关于这个的任何想法?非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在Joomla网站的主目录下创建一个包含以下内容的403.html文件:

<meta http-equiv="refresh" content="0; url=http://www.yourwebsite.com/members" />

在.htaccess文件中,添加以下代码:

ErrorDocument 403 /403.html

如果您只想对某些请求执行此操作,请重定向到.htaccess文件中的403.php文件(而不是重定向到403.html文件),检查REQUEST URI以查看它是否确实来自成员区域,然后重定向回成员页面。

答案 1 :(得分:0)

当尝试访问受保护的文章时,Joomla创建/引发403事件。因此,编辑文件System / error.php或在模板本身内均无效。同样,使用ErrorDocument的.htaccess或httpd.conf中的其他解决方案也不起作用。

我还尝试了代码this-> error-> getCode()=='403',但是没有触发。

我发现的唯一解决方案是修改文章的HTML视图,以将其重定向到显示登录名和个性化消息的文章。

要修改的文件是components / com_content / views / article / view.html.php第134至139行

Joomla 3.9.20

要替换的代码如下:


 // Check the view access to the article (the model has already computed the values).
                if ($ item-> params-> get ('access-view') == false && ($ item-> params-> get ('show_noauth', '0') == '0'))
                {
                        $ app-> enqueueMessage (JText :: _ ('JERROR_ALERTNOAUTHOR'), 'error');
                        $ app-> setHeader ('status', 403, true);
                        return;                        
                }

为此

                // Check the view access to the article (the model has already computed the values).
                if ($item->params->get('access-view') == false && ($item->params->get('show_noauth', '0') == '0'))
                {
                        header('Location:https://www.yourwebpage/withLoginandCustomMessage.php');
                 die();
                }

仅向尝试查看需要注册或使用其他ACL的文章的用户显示。

我知道我们不应该编辑文件,因为在Joomla更新中,这些更改可能会丢失,但这是我发现的唯一解决方案(模块或插件都无法解决此问题,显然这是由joomla 1.5)。