Решил поднять давнюю тему, так как считаю ее все еще актуальной.
Я сталкнулся с той же проблемой - при включенной обработке ошибки 404 на EE не работают прямые пути к шаблонам в группе по-умолчанию
т.е. так не пашет:
http://site.ru/comments
а так пашет:
http://site.ru/site/comments
Посчитал несколько не удобным добавлять каждый раз новые шаблоны в htaccess:
RewriteCond $1 ^(comments|category|404|library|P[0-9]{2,8}) [NC]
Поэтому предлогаю свой способ решения проблемы (не большой хак ядра) - такое мне ближе
))
1. Открыть файл /core/core.template.php
2. Найти в функции parse_template_uri
$template = $IN->fetch_uri_segment(1);
if ($IN->fetch_uri_segment(2))
{
$IN->QSTR = preg_replace("#".'/'.$IN->fetch_uri_segment(1)."/#", '', $IN->URI);
}
}
}
добавить после:
else
{
// Denik added: search template for default group
// The first segment the name of a template?
$query = $DB->query("SELECT exp_template_groups.group_name
FROM exp_template_groups, exp_templates
WHERE exp_template_groups.group_id = exp_templates.group_id
AND exp_template_groups.is_site_default = 'y'
AND exp_templates.template_name = '".$DB->escape_str($IN->fetch_uri_segment(1))."'
AND exp_template_groups.site_id = '".$DB->escape_str($PREFS->ini('site_id'))."' ");
if ($query->num_rows === 1)
{
$template_group = $query->row['group_name'];
$template = $IN->fetch_uri_segment(1);
$IN->QSTR = preg_replace("#/$template_group/$template#", '', $IN->URI);
}
// end
}
Все. Теперь при запросе, к примеру: site.ru/kjsdf - система будет искать сперва шаблон kjsdf в группе по-умолчанию активного сайта и если не найдет - вызовет указанную страницу ошибки 404