Проблема с 301 переадресацией

H
На сайте с 27.06.2011
Offline
11
905

Здравствуйте! Огромная просьба помочь найти решение или подтолкнуть в нужном направлении.

Суть проблемы: Есть сайт на MODx - http://restprom.ru/ , был перенесен с самописной CMS. Переадресация страниц со старого сайта осуществлялась с помощью RedirectMap 1.0. В какой то момент редирект перестал срабатывать, есть подозрения, что после правки файла htaccess.

Вопрос: Какая часть кода может быть причиной конфликта, или что могло «сломаться»? И еще – существует ли «идеальный» вариант написания файла конфигурации апаче для устранения дублей страниц?

Пример переадресации: Старая страница - http://restprom.ru/freeze_service Новая страница - http://restprom.ru/uslugi/remont_holodilnogo_oborudovaniya/.

Есть подозрение что накосячил именно в файле .htaccess:

Options +FollowSymlinks

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^www.restprom\.ru$ [NC]

RewriteRule ^(.*)$ http://restprom.ru/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*)$ /$1/ [R=301,L]

RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]

RewriteRule .* - [F,L]

RewriteRule ^(manager|assets)/*$ - [L]

RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

RewriteCond %{REQUEST_URI} ^/index.html$

RewriteRule .+ http://restprom.ru/ [R=301,L]

RewriteCond %{REQUEST_URI} ^/index.htm$

RewriteRule .+ http://restprom.ru/ [R=301,L]

Код плагина:

global $modx;

$mapChunk = $modx->getChunk($chunk);

$mapLines = explode("\n",$mapChunk);

$mapArr = array();

foreach($mapLines as $line) {

list($link,$redirectId) = explode('||',$line);

$mapArr[$link] = $redirectId;

}

$q = $_REQUEST['q'];

if(isset($mapArr[$q])) {

$url = $modx->makeUrl($mapArr[$q]);

$modx->sendRedirect($url,0,'REDIRECT_HEADER','HTTP/1.1 301 Moved Permanently');

exit();

}

Буду признателен морально и материально просветившему в этом вопросе.

siv1987
На сайте с 02.04.2009
Offline
427
#1
Hennedy:
И еще – существует ли «идеальный» вариант написания файла конфигурации апаче для устранения дублей страниц?

Нет. Апаче не занимается дублями кмс.

Hennedy:
переадресация страниц со старого сайта осуществлялась с помощью RedirectMap 1.0.

В нем и ищите проблему

В какой то момент редирект перестал срабатывать, есть подозрения, что после правки файла htaccess.

Если что-то кажется надо вернуть до исходного состояния когда работало, и сравнить результат ДО и ПОСЛЕ.

H
На сайте с 27.06.2011
Offline
11
#2
siv1987:
Нет. Апаче не занимается дублями кмс.


В нем и ищите проблему


Если что-то кажется надо вернуть до исходного состояния когда работало, и сравнить результат ДО и ПОСЛЕ.

Если не ошибаюсь, с помощью htaccess как раз и решаются проблемы доступности одной и той же страницы по разным адресам, типа "site.ru/index.php", "site.ru/index.html","site.ru/","site.ru" и тд. Если не прав, поправьте, пожалуйста.

Если бы знал где проблема и была возможность откатить до предыдущего состояния, не обращался бы к ВАМ. ))

siv1987
На сайте с 02.04.2009
Offline
427
#3
Hennedy:
Если не прав, поправьте, пожалуйста.

/index.php и /index.html эта капля в океане. Реальные дубли начинаются отсюда

/ru/forum/689355

/ru/forum/comment/9964630

/ru/forum/comment/9965608

Если бы знал где проблема и была возможность откатить до предыдущего состояния, не обращался бы к ВАМ. ))

А мы откуда можем знать ваше предыдущие состояние? Бэкапы надо делать перед каждым изменением. Здесь не так уж и много строчек, можно и запомнить что вносили а что было. Капайте в сторону модуля, проблемы в htaccess не вижу. Или восстановите дефолтный файл модх-а если кажется что дело именно в мод_реврайте.

---------- Добавлено 27.01.2012 в 18:15 ----------

Но как вариант попробуйте убрать вот эти строчки

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*)$ /$1/ [R=301,L]

они редиректят страницу без слэша, а у вас старые как раз без него. По этому возможно в базе не находится старый урл

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий