2

joomla 3.8 中的链接有问题。我有类似http://mysite.loc/my-category/my-subcategory/89的链接,这是 id 为 89 的材料的正确链接。但是当我输入http://mysite.loc/my-category/my- subcategory/89asdasdasdasd Joomla 给我看这个页面,然后回复 200/ok。我该如何处理这个问题并为这样的 URL 显示 404 错误?SEF 已开启

4

2 回答 2

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);
            }
于 2017-12-14T14:45:49.993 回答
0

是的——这就是 Joomla 的行为方式。当您有类似的东西时yoursite.com/my-category/123-blablabla,Joomla 将加载具有123ID 的文章。事实上,带有 ID 的文章123甚至不必在my-category类别中。这是 Joomla 中奇怪的事情之一。

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

于 2017-12-14T12:07:03.693 回答