<![CDATA[ Проблемы с redirector - My Forums]]> https://forums.modx.com/thread/?thread=102200 <![CDATA[Проблемы с redirector]]> https://forums.modx.com/thread/102200/redirector#dis-post-550652
Собрал сайт на MODx Revo. При переносе на старый домен заказчик попросил чтобы старые страницы не потерялись из поиска.

Старые страницы открывались по адресам вида
index.php?action=about (страница о компании)
index.php?action=news (список новостей)
index.php?action=news&id=70 (одна новость)

Для решения создал раздел для старых страниц отдельный раздел, перенес туда все материалы, создал редиректы используя
Redirector 2.0.8-pl

Столкнулся со следующими проблемами:
1. С такими шаблонами редиректы не работают вообще !!!
index.php?action=about
index.php?action=news

2. С некоторыми из таких шаблонов редиректы не работают !!!
index.php?action=news&id=70

3. В таблице редиректора многие строки не обновляются после редиректов (в случае если редирект сработал)
То есть во многих строках после успешного редиректа в таблице в столбце Triggered остается 0 и не заполнено Last time triggered

Если 3-я проблема для меня не критична, то первые 2 мне нужно срочно исправить. Подскажите, пожалуйста, что мне делать...

Спасибо!
]]>
satyva May 11, 2017, 10:04 AM https://forums.modx.com/thread/102200/redirector#dis-post-550652
<![CDATA[Re: Проблемы с redirector]]> https://forums.modx.com/thread/102200/redirector#dis-post-550705
1. Используем какое нибудь поле, например link_attributes, пишем туда значение action из исходных ссылок, например about для страницы "О компании"

2. Создаем плагин на событие OnWebPageInit, который будет ловить GET данные в URL и в случае наличия например action=home ищем документ с home в поле link_attributes, получаем его id, создаем на него ссылку и делаем 301 редирект.

<?php
if ($modx->event->name == 'OnWebPageInit' && !empty($_GET['action'])) {
	$oldUrl = $_GET['action'];
	$page = $modx->getObject('modResource', array(
		'link_attributes' => $oldUrl,
		'published' => 1,
		'deleted' => 0
	));
	$id = $page->get('id');
	$url = $modx->makeUrl($id);
	$modx->sendRedirect($url, array(
		'responseCode' => 'HTTP/1.1 301 Moved Permanently'
	));
}


С ссылками типа action=news&id=70 несколько сложнее, но думаю что id уникальный и ловить его можно точно таким же способом. Если не получится реализовать - напишите мне на почту или в skype, разберемся.
]]>
modxhelp.ru May 13, 2017, 03:21 PM https://forums.modx.com/thread/102200/redirector#dis-post-550705