$path_parts = pathinfo($_SERVER['REQUEST_URI']);
$alias = $modx->db->escape(basename($path_parts["basename"], '.'.$path_parts["extension"]));
$id = $modx->db->getValue( $modx->db->select( 'id', $modx->getFullTableName('site_content'), "deleted=0 and published=1 and alias='{$alias}'" ) );
if ($id > 0) {
$modx->sendRedirect($modx->makeUrl($id), 0, 'REDIRECT_HEADER', 'HTTP/1.1 301 Moved Permanently');
exit;
}
И вешаем его на событие onPageNotFound
Суть плагина если не находим документ то ищем в дереве документ с таким же alias и редиректим на него. Единсвенное могут быть ложные срабатывания если у вас включено повторение alias в настройках. В остальном работает отлично :)
Александр 15.10.2016 15:02 #
Dmi3yy 15.10.2016 15:10 #
Александр 15.10.2016 15:14 #
У меня modx Evo.
1. Cоздал плагин.
2. Поцепил onPageNotFound.
Может его надо запустить ещё в tv-параметрах?
К справке — у меня стоит ещё мультиязычность evoBabel
Dmi3yy 15.10.2016 15:16 #
и будет понятно работает ли плагин или evoBabel ему мешает
Александр 15.10.2016 15:22 #
ни
Dmi3yy 15.10.2016 15:24 #
Проверьте какие еще плагины висят на событие 404 и какой у них порядок
Алексей Либер 09.11.2016 20:56 #
Ну а потом да, обычный плагинчик по поиску в uri и 301 редиректом…