【问题标题】:Joomla 3.8 404 error on incorrect links错误链接上的 Joomla 3.8 404 错误
【发布时间】:2018-05-27 15:12:12
【问题描述】:
【问题讨论】:
标签:
php
joomla
http-status-code-404
joomla3.8
【解决方案1】:
是的 - 这就是 Joomla 的行为方式。当您有yoursite.com/my-category/123-blablabla 之类的内容时,Joomla 将加载具有123 作为 ID 的文章。事实上,ID 为123 的文章甚至不必属于my-category 类别。这是 Joomla 中奇怪的事情之一。
解决此问题的方法是从 URL 中删除文章 ID,如 here 所述。但请记住两件事:1) 这是一个核心修改,2) 3.8.+ 的操作说明可能会略有不同。
【解决方案2】:
我找到了对我有用的解决方案。
在 ContentRouterRulesLegacy 类中找到方法 parse,并在哪里调用查询到 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);
}