Php Joomla 3.8 404错误链接错误

Php Joomla 3.8 404错误链接错误,php,joomla,http-status-code-404,joomla3.8,Php,Joomla,Http Status Code 404,Joomla3.8,我对joomla 3.8中的链接有问题。 我有类似的链接,这是id为89的材料的正确链接。 但是当我进去的时候 Joomla给我看这一页,然后重复200次/ok。我如何处理这个问题,并显示像这样的URL的404错误?SEF已打开是-这就是Joomla的行为方式。当您有类似于yoursite.com/my category/123 blabla的内容时,Joomla将加载带有123作为ID的文章。事实上,ID为123的文章甚至不必位于my category类别中。这是乔姆拉的一件怪事 此问题的解决

我对joomla 3.8中的链接有问题。 我有类似的链接,这是id为89的材料的正确链接。 但是当我进去的时候
Joomla给我看这一页,然后重复200次/ok。我如何处理这个问题,并显示像这样的URL的404错误?SEF已打开

是-这就是Joomla的行为方式。当您有类似于
yoursite.com/my category/123 blabla
的内容时,Joomla将加载带有
123
作为ID的文章。事实上,ID为
123
的文章甚至不必位于
my category
类别中。这是乔姆拉的一件怪事


此问题的解决方案是从URL中删除文章ID,如前所述。但要记住两件事:1)这是一个核心修改,2)3.8++的操作说明可能略有不同

我找到了解决办法,它对我很有效。 在ContentRouterRulesLegacy类中,查找方法parse,并在其中调用对db的查询以执行文章信息put

    $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);
            }