301 редирект

Voland
На сайте с 30.08.2007
Offline
50
1402

Здравствуйте, уважаемые любители Apache :)

Подскажите, что не так с .htaccess ?

Пациент:

RewriteEngine on

AddType application/x-httpd-php53 .phpRewriteCond %{HTTP_HOST}

RewriteRule ^shop/ /shops/ [R=301]

RewriteRule ^shop/index.php?categoryID=693 /shops/index.php?categoryID=667 [R=301]

RewriteRule ^shop/index.php?productID=5708 /shops/index.php?productID=3315 [R=301]

RewriteRule ^shop/index.php?productID=5705 /shops/index.php?productID=3314 [R=301]

RewriteRule ^shop/index.php?productID=5704 /shops/index.php?productID=3313 [R=301]

RewriteRule ^shop/index.php?productID=5703 /shops/index.php?productID=3311 [R=301]

RewriteRule ^shop/index.php?productID=5701 /shops/index.php?productID=3309 [R=301]

RewriteRule ^shop/index.php?productID=5702 /shops/index.php?productID=3310 [R=301]

RewriteRule ^shop/index.php?productID=5706 /shops/index.php?productID=3312 [R=301]

RewriteRule ^shop/index.php?productID=5735 /shops/index.php?productID=3305 [R=301]

RewriteRule ^shop/index.php?productID=5733 /shops/index.php?productID=3306 [R=301]

RewriteRule ^shop/index.php?productID=5707 /shops/index.php?productID=3303 [R=301]

RewriteRule ^shop/index.php?productID=5734 /shops/index.php?productID=3304 [R=301,L]

Я конечно не гуру, что смог, то написал, но первое правило:

RewriteRule ^shop/ /shops/ [R=301]

выполняется нормально. Т.е. при заходе на страницу www.site.ru/shop/ редиректимся на www.site.ru/shops/

Ну, а дальше по списку редиректы не работают.

Перепробовано около миллиарда комбинаций. Что не так?

Himiko
На сайте с 28.08.2008
Offline
560
#1

Попробуйте поставить $ в конец. Пример:

RewriteRule ^shop/index.php?productID=5734$ /shops/index.php?productID=3304 [R=301,L]

Да и 301-й редирект можно и без rewrite:

Redirect 301 /shop/index.php?productID=5734 /shops/index.php?productID=330

И в первом правиле тоже добавьте $, иначе может перебивать все остальные.

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
Voland
На сайте с 30.08.2007
Offline
50
#2
Himiko:
Попробуйте поставить $ в конец. Пример:
RewriteRule ^shop/index.php?productID=5734$ /shops/index.php?productID=3304 [R=301,L]

Да и 301-й редирект можно и без rewrite:
Redirect 301 /shop/index.php?productID=5734 /shops/index.php?productID=330

В случае, описанном первым попадаем на страницу

http://www.site.ru/shops/?productID=5734, что не совсем то, что надо, т.е. редирект работает, сохраняя ID продукта 5734, а надо 3304...

При конфигурации .htaccess во втором случае вообще ошибка 500

Himiko
На сайте с 28.08.2008
Offline
560
#3

Ошибся.

В вашем случае сработает так:

RewriteCond %{QUERY_STRING} ^productID=5734$

RewriteRule .* /shops/index.php?categoryID=330 [R=301]

Voland
На сайте с 30.08.2007
Offline
50
#4
Himiko:
Ошибся.
В вашем случае сработает так:
RewriteCond %{QUERY_STRING} ^productID=5734$
RewriteRule .* /shops/index.php?categoryID=330 [R=301]

Огромное спасибо. Помогло :)

В моем случае .htaccess выглядит так:


RewriteEngine on
AddType application/x-httpd-php53 .phpRewriteCond %{HTTP_HOST}
RewriteRule ^shop/ /shops/ [R=301]
RewriteCond %{QUERY_STRING} ^productID=5734$
RewriteRule .* /shops/index.php?productID=3304 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5707$
RewriteRule .* /shops/index.php?productID=3303 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5733$
RewriteRule .* /shops/index.php?productID=3306 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5735$
RewriteRule .* /shops/index.php?productID=3305 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5706$
RewriteRule .* /shops/index.php?productID=3312 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5702$
RewriteRule .* /shops/index.php?productID=3310 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5701$
RewriteRule .* /shops/index.php?productID=3309 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5703$
RewriteRule .* /shops/index.php?productID=3311 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5704$
RewriteRule .* /shops/index.php?productID=3313 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5705$
RewriteRule .* /shops/index.php?productID=3314 [R=301]

RewriteCond %{QUERY_STRING} ^productID=5708$
RewriteRule .* /shops/index.php?productID=3315 [R=301]

RewriteCond %{QUERY_STRING} ^categoryID=693$
RewriteRule .* /shops/index.php?categoryID=667 [R=301]
C
На сайте с 13.02.2007
Offline
39
#5

Новую Тему не буду флудитиь, можете подсказать

страница http://site.ru/o-kompanii/4-o-kompanii.html

перенаправить на http://site.ru/o-kompanii/

С
На сайте с 14.04.2011
Offline
63
#6

chyvash

RewriteCond %{REQUEST_URI} ^/o-kompanii/4-o-kompanii.html$
RewriteRule .* /o-kompanii/ [R=301,L]
C
На сайте с 13.02.2007
Offline
39
#7
Сентябрь:
chyvash
RewriteCond %{REQUEST_URI} ^/o-kompanii/4-o-kompanii.html$

RewriteRule .* /o-kompanii/ [R=301,L]

Супер помогло! Очень рад, удалил много дублей в ДЛЕ

chyvash добавил 09.11.2011 в 12:22

Сентябрь, Можете подсказать еще 1 фичу :

на данный момент http://site.ru/раздел1/

нужно перекинуть все на http://site.ru/каталог/раздел1/

С
На сайте с 14.04.2011
Offline
63
#8

chyvash

Ну точно также:

RewriteCond %{REQUEST_URI} ^/razdel1/$

RewriteRule .* /catalog/razdel1/ [R=301,L]

Если нужно обрабатывать запросы вида /razdel/blabla тоже, то уберите $ в конце первой строки.

C
На сайте с 13.02.2007
Offline
39
#9
Сентябрь:
chyvash
Ну точно также:
RewriteCond %{REQUEST_URI} ^/razdel1/$

RewriteRule .* /catalog/razdel1/ [R=301,L]

Если нужно обрабатывать запросы вида /razdel/blabla тоже, то уберите $ в конце первой строки.

RewriteCond %{REQUEST_URI} ^/razdel1/$

RewriteRule .* /katalog/razdel1/[R=301,L]

мне он пишет то что сайт.ru/katalog/razdel1/$ как то по другому пробовал все рано получается так

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