我在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已开启
答案 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);
}