不正确的链接上的Joomla 3.8 404错误

时间:2017-12-13 16:28:56

标签: php joomla http-status-code-404 joomla3.8

我在joomla 3.8中遇到链接问题。 我有像http://mysite.loc/my-category/my-subcategory/89这样的链接,这是ID为89的资料的正确链接。 但是当我输入http://mysite.loc/my-category/my-subcategory/89asdasdasdasd时 Joomla告诉我这个页面,然后重复200 / ok。我如何处理此问题并显示网址的404错误? SEF已开启

2 个答案:

答案 0 :(得分:0)

是的 - 这就是Joomla的行为方式。当您有yoursite.com/my-category/123-blablabla之类的内容时,Joomla会加载包含123作为ID的文章。事实上,标识为123的文章甚至不必属于my-category类别。这是Joomla的一个奇怪的事情。

此问题的解决方案是按照here所述从网址中删除文章ID。请记住以下两点:1)这是一个核心修改,2)关于如何这样做的说明可能会略有不同3.8。+。

答案 1 :(得分:0)

我发现解决方案对我有用。 在类ContentRouterRulesLegacy中查找方法解析,并将其调用查询到db来执行文章信息放置。

    $query = $db->getQuery(true)
                ->select($db->quoteName(array('alias', 'catid')))
                ->from($db->quoteName('#__content'))
                ->where($db->quoteName('id') . ' = ' . (int) $id,'AND')
                ->where($db->quoteName('alias') . ' = ' . "'$alias'");

            $db->setQuery($query);
            $article = $db->loadObject();

            if ($article)
            {
                if ($article->alias == $alias)
                {
                    $vars['view'] = 'article';
                    $vars['catid'] = (int) $article->catid;
                    $vars['id'] = (int) $id;

                    return;
                }
            }
            else
            {
                header('HTTP/1.0 404 Not Found');

                JError::raiseError(404, 'JGLOBAL_RESOURCE_NOT_FOUND');

                exit(404);
            }