Редирект с домена на домен - добавляются лишние параметры в адрес

12
wilelf
На сайте с 27.06.2005
Offline
322
#11

Не понимаю.

В чем ошибка?

RewriteRule ^11(.*)$ http://www.astron-mebel.ru/gostinye/ [R=301,L]

RewriteRule ^16(.*)$ http://www.astron-mebel.ru/gostinye/...dlya-gostinyh/ [R=301,L]

RewriteRule ^1(.*)$ http://www.astron-mebel.ru/spalni/ [R=301,L]

Агентство контекстной рекламы НеВсем ( https://www.nevsem.ru/ ) Пишу платно статьи для Хабра. Мой профиль ( https://habr.com/ru/users/wilelf/ )
siv1987
На сайте с 02.04.2009
Offline
427
#12
wilelf:
В чем ошибка?

Синтаксических ошибок здесь нет. Поэтому покажите полный htaccess и адреса которые вы пытаетесь редиректить.

wilelf
На сайте с 27.06.2005
Offline
322
#13

AddDefaultCharset UTF-8

Options +FollowSymLinks

RewriteEngine on

RewriteBase /

RewriteRule ^/logistic$ /dostavka-i-sborka-mebeli/$ [R=301,L]

RewriteRule ^/actions$ /action/$ [R=301,L]

RewriteRule ^/photo$ /$[R=301,L]

RewriteRule ^/discount$ /action/$ [R=301,L]

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

RewriteRule ^element/24(.*)$ /spalni/shkafy/$ [R=301,L]

RewriteRule ^element/16(.*)$ /spalni/tumbochki-dlya-spalni/$ [R=301,L]

RewriteRule ^element/17(.*)$ /spalni/malenkie-tualetnye-stoliki/$ [R=301,L]

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

RewriteRule ^element/15(.*)$ /gostinye/malenkie-zhurnalnye-stoliki/$ [R=301,L]

RewriteRule ^element/20(.*)$ /gostinye/vitriny-dlya-gostinyh/$ [R=301,L]

RewriteRule ^element/6(.*)$ /gostinye/polki-na-stenu/$ [R=301,L]

RewriteRule ^element/11(.*)$ /gostinye/tumbochki-pod-televizor/$ [R=301,L]

RewriteRule ^composition/5(.*)$ /molodjozhnye/podrostkovaya-mebel/$ [R=301,L]

RewriteRule ^element/10(.*)$ /molodjozhnye/kompyuternye-stoly/$ [R=301,L]

RewriteRule ^composition/3(.*)$ /mebel-dlya-domashnej-biblioteki/$ [R=301,L]

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

RewriteRule ^composition/7(.*)$ /gotovye-proekty/$ [R=301,L]

RewriteRule ^element/12(.*)$ /gostinye/$ [R=301,L]

RewriteRule ^element/18(.*)$ /spalni/shkafy/shkafy-dlya-odezhdy/$ [R=301,L]

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

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

RewriteRule ^element/14(.*)$ /sovremennye-prihozhie/$ [R=301,L]

RewriteRule ^composition/4(.*)$ /spalni/$ [R=301,L]

RewriteRule ^element/3(.*)$ /spalni/krovati/$ [R=301,L]

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

RewriteRule ^element/8(.*)$ /gostinye/$ [R=301,L]

RewriteRule ^element/9(.*)$ /mebel-dlya-domashnej-biblioteki/$ [R=301,L]

RewriteRule ^element/5(.*)$ /gostinye/$ [R=301,L]

RewriteRule ^element/4(.*)$ /spalni/shkafy/shkafy-dlya-odezhdy/$ [R=301,L]

RewriteRule ^element/1(.*)$ /spalni/komody-dlya-spalni/$ [R=301,L]

RewriteRule ^composition/2(.*)$ /sovremennye-prihozhie/$

RewriteCond %{HTTP_HOST} ^astron-mebel.ru$ [NC]

RewriteRule ^(.*)$ http://www.astron-mebel.ru/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f

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

RewriteCond $1 !^(index\.php|templates|images|admin_images|userfiles|storage|css|js|robots\.txt|sitemap\.xml|favicon\.ico)

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

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|templates|images|admin_images|userfiles|storage|css|js|favicon\.ico)

RewriteRule ^(.*)$ index.php?/$1 [L]

siv1987
На сайте с 02.04.2009
Offline
427
#14

Где вы их добавляете и адреса которые пытаетесь редиректить?

wilelf
На сайте с 27.06.2005
Offline
322
#15

.htaccess, где же еще...

Пример адреса для редиректа http://astron-mebel.ru/catalog/detail/As28.311

J
На сайте с 20.02.2014
Offline
120
jkm
#16


RewriteRule ^/logistic$ /dostavka-i-sborka-mebeli/$ [R=301,L]
RewriteRule ^/actions$ /action/$ [R=301,L]

Символ ^ в шаблоне обозначает позицию в начале текста. Строка, с которой работает RewriteRule не начинается с "/". Это подробно описано в статье http://habrahabr.ru/company/sprinthost/blog/129560/

RewriteRule Pattern Substitution [Flags]

В Substitution лишний символ $ приводит к целой серии редиректов.

Например:


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

/gostinye/$ => /gostinye/$/ => /404 => /404/

http://www.bertal.ru/index.php?a2017976/www.astron-mebel.ru/composition/1/4#h

Если планировалось делать редирект для адресов /catalog/composition/1, то достаточно убрать символ ^ из шаблона.


RewriteRule /composition/1 /gostinye/ [R=301,L]
siv1987
На сайте с 02.04.2009
Offline
427
#17
wilelf:
.htaccess, где же еще...

Ясно что в htaccess, вопрос где?..

wilelf:
Пример адреса для редиректа http://astron-mebel.ru/catalog/detail/As28.311

Этот пример не соответствует ни одному из этих регулярных выражениях. ^11 - означает что uri начинается с /11, а у вас пример начинается с /catalog/detail/As (^ - маркер начала строки).

wilelf
На сайте с 27.06.2005
Offline
322
#18

Все равно что-то не работает...

AddDefaultCharset UTF-8

Options +FollowSymLinks

RewriteEngine on

RewriteBase /

RewriteRule /logistic http://www.astron-mebel.ru/dostavka-i-sborka-mebeli/ [R=301,L]

RewriteRule /actions /action/ [R=301,L]

RewriteRule /photo /[R=301,L]

RewriteRule /discount /action/ [R=301,L]

RewriteRule /detail/(.*) / [R=301,L]

RewriteRule /element/24(.*) /spalni/shkafy/ [R=301,L]

RewriteRule /element/16(.*) /spalni/tumbochki-dlya-spalni/ [R=301,L]

RewriteRule /element/17(.*) /spalni/malenkie-tualetnye-stoliki/ [R=301,L]

RewriteRule /composition/1(.*) /gostinye/ [R=301,L]

RewriteRule /element/15(.*) /gostinye/malenkie-zhurnalnye-stoliki/ [R=301,L]

RewriteRule /element/20(.*) /gostinye/vitriny-dlya-gostinyh/ [R=301,L]

RewriteRule /element/6(.*) /gostinye/polki-na-stenu/ [R=301,L]

RewriteRule /element/11(.*) /gostinye/tumbochki-pod-televizor/ [R=301,L]

RewriteRule /composition/5(.*) /molodjozhnye/podrostkovaya-mebel/ [R=301,L]

RewriteRule /element/10(.*) /molodjozhnye/kompyuternye-stoly/ [R=301,L]

RewriteRule /composition/3(.*) /mebel-dlya-domashnej-biblioteki/ [R=301,L]

RewriteRule /composition/6(.*) / [R=301,L]

RewriteRule /composition/7(.*) /gotovye-proekty/ [R=301,L]

RewriteRule /element/12(.*) /gostinye/ [R=301,L]

RewriteRule /element/18(.*) /spalni/shkafy/shkafy-dlya-odezhdy/ [R=301,L]

RewriteRule /element/22(.*) / [R=301,L]

RewriteRule /element/19(.*) / [R=301,L]

RewriteRule /element/14(.*) /sovremennye-prihozhie/ [R=301,L]

RewriteRule /composition/4(.*) /spalni/ [R=301,L]

RewriteRule /element/3(.*) /spalni/krovati/ [R=301,L]

RewriteRule /element/2(.*) / [R=301,L]

RewriteRule /element/8(.*) /gostinye/ [R=301,L]

RewriteRule /element/9(.*) /mebel-dlya-domashnej-biblioteki/ [R=301,L]

RewriteRule /element/5(.*) /gostinye/ [R=301,L]

RewriteRule /element/4(.*) /spalni/shkafy/shkafy-dlya-odezhdy/ [R=301,L]

RewriteRule /element/1(.*) /spalni/komody-dlya-spalni/ [R=301,L]

RewriteRule /composition/2(.*) /sovremennye-prihozhie/

RewriteCond %{HTTP_HOST} ^astron-mebel.ru$ [NC]

RewriteRule ^(.*)$ http://www.astron-mebel.ru/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f

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

RewriteCond $1 !^(index\.php|templates|images|admin_images|userfiles|storage|css|js|robots\.txt|sitemap\.xml|favicon\.ico)

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

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|templates|images|admin_images|userfiles|storage|css|js|favicon\.ico)

RewriteRule ^(.*)$ index.php?/$1 [L]

siv1987
На сайте с 02.04.2009
Offline
427
#19
wilelf:
RewriteRule /actions /action/ [R=301,L]

Такое правила будет работать только если uri не начинается с actions - /asdasd/actions.

Показывайте примеры адресов для некоторых случаев. Примеры должны быть конкретные.

jkm:
Строка, с которой работает RewriteRule не начинается с "/". Это подробно описано в статье http://habrahabr.ru/company/sprinthost/blog/129560/
Q
На сайте с 24.07.2015
Offline
1
qdd
#20

Всем привет! Я представитель заказчика, который нанял wilelf для реализации наших веб-затей. Эта ветка появилась из-за того, что мы при обновлении сайта поменяли его структуру. Конечно, пока старые страницы в индексе, мы хотели получать с них редиректы на релевантные новые. Обсуждение я нашёл случайно, просматривая упоминания о нас в сети. Но ближе к делу.

Как верно было замечено:

jkm:
Правила применяются в том порядке, в котором они перечислены. Перенесите правила для редиректа на самый верх сразу после RewriteEngine On

Поэтому с index.php? я поборолся переносом наверх под RewriteBase / этой конструкции.

RewriteCond %{HTTP_HOST} ^astron-mebel.ru$ [NC]

RewriteRule ^(.*)$ http://www.astron-mebel.ru/$1 [R=301,L]

Сразу за ней я прописал редиректы со старых страниц тоже изменив их.

Получилось так: RewriteRule ^(.*)/element/24(.*)$ spalni/shkafy/ [R=301,L]

Всё работает. Убедиться можно по ссылке:

https://www.google.ru/?gws_rd=ssl#newwindow=1&q=site:astron-mebel.ru+inurl:%28detail|composition|element|logistic%29

Такие вот бывают заказчики)

P. S. Кому понравится мебель — заказывайте!)

12

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