Redirector и ощибка 404
Здравствуйте!
Столкнулся с проблемой при использования дополнения Redirector.
После обновления сайта изменились очень многие адреса.
В общем-то сам редиректор работает нормально, но сайт перестал отдавать 404 ошибку при переходе на несуществующий URL. Вместо 404 страницы происходит редирект на существующюю страницу одного из разделов сайта.
В настройках системы 404 настроена, всё проверил.
Может кто-то сталкивался с такой проблемой?
И ещё: можно ли редиректить Redirector-ом изображения?
нужноли дублировать информацию в .htaccess для Поисковых Систем?
Столкнулся с проблемой при использования дополнения Redirector.
После обновления сайта изменились очень многие адреса.
В общем-то сам редиректор работает нормально, но сайт перестал отдавать 404 ошибку при переходе на несуществующий URL. Вместо 404 страницы происходит редирект на существующюю страницу одного из разделов сайта.
В настройках системы 404 настроена, всё проверил.
Может кто-то сталкивался с такой проблемой?
И ещё: можно ли редиректить Redirector-ом изображения?
нужноли дублировать информацию в .htaccess для Поисковых Систем?
Комментарии: 10
Выяснил, что 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.
В итоге сделал через .htaccess, причём сработала только такая конфигурация:
RewriteRule ^page1.php page2.html [R=301,NC,L]
Подскажите, как сделать редирект через .htaccess вот таких ссылок
faq/index.php?question=15 на раздел1/раздел2/чуп.html
Никак не могу найти вариант для MODX.
Собственно всё, разобрался!
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]
Работает! Может кому-то будет полезно.
Всем спасибо ))))
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]
Работает! Может кому-то будет полезно.
Всем спасибо ))))
Была такая же проблема. Снес его нафиг и перенес все в autoRedirector.
тоже столкнулся с этим. Перенес с WP на MODx, но особо не парюсь — на WP очень много «мусорных» url-ов было. пускай на одну из страниц перенаправляет, мне даже эта фишка понравилась в redirector'е
Как я понял, в Redirector после установки первый редирект нужно делать на страницу 404, то есть Redirector все не существующие страницы перенаправляет на запись с Id = 1.
Снова установил Redirector. Сделал, как писал Александр выше. Но не сразу обратил внимание на такое поведение:
Заходим на несуществующую страницу, по логике и всем правилам мы должны получить 404 ошибку и MODx должен перенаправить нас на соответствующую страницу. Но Redirector поступает иначе, он отдает 301 код и редиректит нас на редирект с id-1 (в моем случае это как раз страница с 404 ошибкой).
Что мы получаем в итоге:
Пользователю в общем-то пофиг, он понимает что произошло.
А вот для поисковиков бардак. Он заходит на несуществующую страницу, его редиректят на страницу 404, которая отдает код 200.
Я недавно полностью обновил сайт, разумеется все URL'ы поменялись. Теперь не знаю каких репрессий ждать. Уже несколько тысяч таких редиректов. + в логе появились ошибки такого типа:
Заходим на несуществующую страницу, по логике и всем правилам мы должны получить 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`, '$'))
Кто подскажет что сделать?
Найдено ли решение?
Если не нужна проверка по регулярным выражениям, можно в плагине 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
дописала в Плагин, чтобы при не существующих страницах редиректил на 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);
}
Может кто оптимизирует ?) $modx->sendRedirect('/404',array('responseCode' => 'HTTP/1.1 404 Not Found'));
или$modx->sendErrorPage();
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.