Redirector и ощибка 404

Здравствуйте!
Столкнулся с проблемой при использования дополнения Redirector.
После обновления сайта изменились очень многие адреса.
В общем-то сам редиректор работает нормально, но сайт перестал отдавать 404 ошибку при переходе на несуществующий URL. Вместо 404 страницы происходит редирект на существующюю страницу одного из разделов сайта.
В настройках системы 404 настроена, всё проверил.
Может кто-то сталкивался с такой проблемой?

И ещё: можно ли редиректить Redirector-ом изображения?
нужноли дублировать информацию в .htaccess для Поисковых Систем?
Илья
04 июня 2014, 06:51
modx.pro
1
8 264
0

Комментарии: 10

Илья
04 июня 2014, 12:59
0
Выяснил, что Redirector перестаёт отдавать 404 ошибку как только добавляю ссылки такого типа faq/index.php?question=15
В итоге сделал через .htaccess, причём сработала только такая конфигурация:
RewriteRule ^page1.php page2.html [R=301,NC,L]

Подскажите, как сделать редирект через .htaccess вот таких ссылок
faq/index.php?question=15 на раздел1/раздел2/чуп.html

Никак не могу найти вариант для MODX.
    Илья
    04 июня 2014, 16:54
    0
    Собственно всё, разобрался!

    aq/index.php?question=15 на раздел1/раздел2/чуп.html
    Сделал так
    RewriteEngine On
    RewriteCond %{QUERY_STRING} =question=15
    RewriteRule ^faq/index\.php /раздел1/раздел2/чуп.html? [R=301,L]

    Работает! Может кому-то будет полезно.

    Всем спасибо ))))
      Evgeny Epifanov
      04 июня 2014, 17:13
      0
      Была такая же проблема. Снес его нафиг и перенес все в autoRedirector.
        Алексей
        06 июня 2014, 00:21
        0
        тоже столкнулся с этим. Перенес с WP на MODx, но особо не парюсь — на WP очень много «мусорных» url-ов было. пускай на одну из страниц перенаправляет, мне даже эта фишка понравилась в redirector'е
          Александр Наумов
          10 сентября 2014, 14:51
          0
          Как я понял, в Redirector после установки первый редирект нужно делать на страницу 404, то есть Redirector все не существующие страницы перенаправляет на запись с Id = 1.
            Evgeny Epifanov
            12 октября 2014, 00:02
            0
            Снова установил Redirector. Сделал, как писал Александр выше. Но не сразу обратил внимание на такое поведение:
            Заходим на несуществующую страницу, по логике и всем правилам мы должны получить 404 ошибку и MODx должен перенаправить нас на соответствующую страницу. Но Redirector поступает иначе, он отдает 301 код и редиректит нас на редирект с id-1 (в моем случае это как раз страница с 404 ошибкой).
            Что мы получаем в итоге:
            Пользователю в общем-то пофиг, он понимает что произошло.
            А вот для поисковиков бардак. Он заходит на несуществующую страницу, его редиректят на страницу 404, которая отдает код 200.
            Я недавно полностью обновил сайт, разумеется все URL'ы поменялись. Теперь не знаю каких репрессий ждать. Уже несколько тысяч таких редиректов. + в логе появились ошибки такого типа:
            [2014-10-11 23:43:37] (ERROR @ /index.php) Error parsing condition with key 0: ('error-404.html321321' REGEXP `modRedirect`.`pattern` OR 'error-404.html321321' REGEXP CONCAT('^', `modRedirect`.`pattern`, '$'))
            Кто подскажет что сделать?
              Вячеслав
              13 мая 2015, 14:55
              0
              Найдено ли решение?
                Serg
                20 мая 2015, 22:41
                0
                Если не нужна проверка по регулярным выражениям, можно в плагине Redirector закоментировать условие на строке 33:
                if(empty($redirect) || !is_object($redirect)) {
                	$redirect = $modx->getObject('modRedirect', array(
                		"('".$search."' REGEXP `modRedirect`.`pattern` OR '".$search."' REGEXP CONCAT('^', `modRedirect`.`pattern`, '$'))",
                		"(`modRedirect`.`context_key` = '".$modx->context->get('key')."' OR `modRedirect`.`context_key` IS NULL OR `modRedirect`.`context_key` = '')",
                		'active' => true,
                	));
                }
                подробнее тут github.com/modxcms/Redirector/issues/24
              yani
              11 июня 2015, 13:13
              0
              дописала в Плагин, чтобы при не существующих страницах редиректил на 404 страницу методов sendForward и возвращался код 404
              $target_id = $redirect->get('id');
                  if ($target_id == 1 ){
                  $tid = $modx->getOption('error_page');
                  header("HTTP/1.0 404 Not Found"); 
                  $modx->sendForward($tid);
                  
                  }else{
                  $options = array('responseCode' => 'HTTP/1.1 301 Moved Permanently');
                  $modx->sendRedirect($target, $options);
                  }
              Может кто оптимизирует ?)
                Илья Ершов
                27 апреля 2018, 10:12
                0
                $modx->sendRedirect('/404',array('responseCode' => 'HTTP/1.1 404 Not Found'));
                или
                $modx->sendErrorPage();
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  10