Не срабатывает редирект, если в ссылке более одного уровня

Обсуждение любых вопросов связанных с файлами конфигурации .htaccess

Не срабатывает редирект, если в ссылке более одного уровня

Сообщение ecletronic » Вс май 22, 2016 4:39 pm

Здравствуйте, ребяты.
Есть проблема. Делаю редирект со старого сайта на новый.
Правки делаю в файле .htaccess в корне нового сайта.


Заголовок файла
Код: выделить все
Options -Indexes
ErrorDocument 404 /404.php

<IfModule mod_php5.c>
  php_flag session.use_trans_sid off
  #php_value display_errors 1
  #php_value mbstring.internal_encoding UTF-8
</IfModule>

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

<IfModule mod_dir.c>
  DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
  ExpiresByType image/png "access plus 3 day"
  ExpiresByType text/css "access plus 3 day"
  ExpiresByType application/javascript "access plus 3 day" 
</IfModule>

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteEngine On
RewriteBase /

redirect /_vti_bin http://www.moydomen.ru
redirect /scripts http://www.moydomen.ru
redirect /MSADC http://www.moydomen.ru
redirect /c http://www.moydomen.ru
redirect /d http://www.moydomen.ru
redirect /_mem_bin http://www.moydomen.ru
redirect /msadc http://www.moydomen.ru
RedirectMatch (.*)\cmd.exe$ http://www.moydomen.ru$1


Собсна сами редиректы, созданные вручную, отрабатывает как запрошено, в адресной строке URL меняется, т.е. с ними все ок.
Код: выделить все
redirect /iphone-1 http://moydomen.ru/services/
redirect /titulnaya http://moydomen.ru/
redirect /skupka http://moydomen.ru/second_hand/second.php
redirect /internet-magazin http://moydomen.ru/catalog
redirect   /kontakty   http://moydomen.ru/contacts/
redirect   /remont-noutbuka   http://moydomen.ru/services/


Дальше URL меняется, но не по редиректу, который задал я.
Обратите внимание URL источника многоуровневый (вида: "/internet-magazin/ссылка2/ссылка3").
Код: выделить все
redirect   /internet-magazin/vendor/hoco   http://moydomen.ru

В итоге получаю ссылку вида:
Код: выделить все
http://moidomen.ru/catalog/vendor/hoco

вместо:
Код: выделить все
http://moydomen.ru

и даже не:
Код: выделить все
http://moydomen.ru/internet-magazin/vendor/hoco



Пробовал поменять синтаксис, писал вместо "Redirect" "RedirectMatch", "Redirect 301', "Redirect Permanent" - все без толку.

Как только в теле ссылки появляется "/internet-magazin/" ни один редирект не страбатывает как надо.

Что делать как быть, помогите пожалуйста.
ecletronic
 
Сообщений: 4
Зарегистрирован: Вс май 22, 2016 4:06 pm
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Emilien » Вс май 22, 2016 6:29 pm

Достаточно поменять местами строки с /internet-magazin и /internet-magazin/vendor/hoco
Код: выделить все
redirect /internet-magazin/vendor/hoco   http://moydomen.ru
redirect /internet-magazin http://moydomen.ru/catalog
Emilien
Мл. Сержант
 
Сообщений: 51
Зарегистрирован: Чт дек 10, 2015 3:35 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение ecletronic » Пн май 23, 2016 11:43 am

Emilien писал(а):Достаточно поменять местами строки с /internet-magazin и /internet-magazin/vendor/hoco
Код: выделить все
redirect /internet-magazin/vendor/hoco   http://moydomen.ru
redirect /internet-magazin http://moydomen.ru/catalog


Спасибо за помощь.
Мне кажется либо я не въезжаю или вы неправильно меня поняли.
Я поправил, как вы предложили, но чето не помогает.

Есть еще в настройках битрикса правила переадресации, выглядят они так
Изображение

Может тут какое-то правило срабатывает с высшим приоритетом, чем редирект в .htaccess?
ecletronic
 
Сообщений: 4
Зарегистрирован: Вс май 22, 2016 4:06 pm
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Emilien » Вт май 24, 2016 2:34 am

Конструкция "Redirect /dir /new" будет перенаправлять не только /dir, но и /dir/page.
/dir => /new
/dir/page => /new/page
/dir/cat/page => /new/cat/page

Код: выделить все
redirect /internet-magazin http://moydomen.ru/catalog

Результат работы этого правила
/internet-magazin => /catalog
/internet-magazin/vendor/hoco => /catalog/vendor/hoco

Правила применяются одно за другим в том порядке, в котором они записаны.
Код: выделить все
redirect /internet-magazin/vendor/hoco   http://moydomen.ru

Нужно поставить это правило повыше, чтобы оно применялось раньше чем редирект на /catalog.
Emilien
Мл. Сержант
 
Сообщений: 51
Зарегистрирован: Чт дек 10, 2015 3:35 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение ecletronic » Вт май 24, 2016 9:14 am

Сделал так:
Код: выделить все
redirect /iphone-1 http://moydomen.ru/services/
redirect /titulnaya http://moydomen.ru/
redirect /skupka http://moydomen.ru/second_hand/second.php
redirect /internet-magazin/product/ http://moydomen.ru/catalog/
redirect   /kontakty   http://moydomen.ru/contacts/
redirect   /remont-noutbuka   http://moydomen.ru/services/
redirect   /internet-magazin/cart   http://moydomen.ru/basket/
redirect   /remont-i-obsluzhivaniye   http://moydomen.ru/services/
redirect   /internet-magazin/vendor/hoco   http://moydomen.ru
redirect   /internet-magazin/product/zashchitnoye-steklo-samsung-galaxy-e7   http://moydomen.ru/catalog/AKSESSUARY/ZASHCHITNYE_STEKLA_I_PLENKI/dlya_telefona/samsung_glass/samsung_galaxy_e7_glass/


По последнему редиректу возвращается ссылка http://moydomen.ru/catalog/zashchitnoye-steklo-samsung-galaxy-e7
И соответственно ошибка 404.
ecletronic
 
Сообщений: 4
Зарегистрирован: Вс май 22, 2016 4:06 pm
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Emilien » Вт май 24, 2016 2:36 pm

Тут аналогичная причина.
Вот это правило
Код: выделить все
redirect /internet-magazin/product/zashchitnoye-steklo-samsung-galaxy-e7 http://moydomen.ru/catalog/AKSESSUARY/ZASHCHITNYE_STEKLA_I_PLENKI/dlya_telefona/samsung_glass/samsung_galaxy_e7_glass/

должно стоять выше чем правило
Код: выделить все
redirect /internet-magazin/product/ http://moydomen.ru/catalog/


Дргугой способ заключается в замене правил Redirect на RedirectMatch и добавлении к шаблону маркеров начала и конца строки ^ $.
В этом случае уже не так важен порядк следования правил.
Код: выделить все
RedirectMatch ^/internet-magazin/product/?$ http://moydomen.ru/catalog/
RedirectMatch ^/internet-magazin/vendor/hoco/?$   http://moydomen.ru/
RedirectMatch ^/internet-magazin/?$ http://moydomen.ru/catalog/
RedirectMatch ^/internet-magazin/cart/?$   http://moydomen.ru/basket/
Emilien
Мл. Сержант
 
Сообщений: 51
Зарегистрирован: Чт дек 10, 2015 3:35 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение ecletronic » Пн май 30, 2016 10:30 am

Спасибо, помог этот способ. Для меня вопрос закрыт. Премного благодарен.
Дргугой способ заключается в замене правил Redirect на RedirectMatch и добавлении к шаблону маркеров начала и конца строки ^ $.
В этом случае уже не так важен порядк следования правил.

RedirectMatch ^/internet-magazin/product/?$ http://moydomen.ru/catalog/
RedirectMatch ^/internet-magazin/vendor/hoco/?$ http://moydomen.ru/
RedirectMatch ^/internet-magazin/?$ http://moydomen.ru/catalog/
RedirectMatch ^/internet-magazin/cart/?$ http://moydomen.ru/basket/
ecletronic
 
Сообщений: 4
Зарегистрирован: Вс май 22, 2016 4:06 pm
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0


Вернуться в Htaccess

Кто сейчас на форуме

Зарегистрированные пользователи: нет зарегистрированных пользователей

cron