Проблема с редиректами в .htaccess

vip1232
На сайте с 12.05.2009
Offline
88
540

Здравствуйте. Пытаюсь сделать 301 редирект htaccess, но возникла проблема с 1 из правил.

Само правило: RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L]

Мои редиректы:

Redirect 301 /load/111/1 http://site.ru/category1/

Redirect 301 /load/111/2 http://site.ru/category2/

Redirect 301 /load/111/3 http://site.ru/category3/

Redirect 301 /load/111/4 http://site.ru/category4/

При вводе адреса http://site.ru/load/111/4 происходит редирект, но в адресной строке следующее:

http://site.ru/category4/?do=cat&category=load/111/4

Уже битый час ищу решение, никак не могу найти.

Заранее благодарен за помощь.

L
На сайте с 30.10.2015
Offline
34
#1

это правило можешь вообще убрать, редиректы смогут и без него работать. если нужно его оставить, то так: RewriteRule ^(.*)$ index.php?do=cat&category=$1 [L]

...
vip1232
На сайте с 12.05.2009
Offline
88
#2
levchernenko:
это правило можешь вообще убрать, редиректы смогут и без него работать. если нужно его оставить, то так: RewriteRule ^(.*)$ index.php?do=cat&category=$1 [L]

Это правило добавляет слеш в конце категории, если его убрать то категории не будут отображаться по адресам ЧПУ, а если сделать как вы написали, то получатся дубли с / и без.

vip1232
На сайте с 12.05.2009
Offline
88
#3

В общем сделал все по средствам php.

Осталось только сделать редирект категорий, которые ни в какую не отдают 301.

В данный момент вопрос таков:

Как осуществить 301 редирект с /?page2 на /page/2/ ?

Желательно по средствам htaccess

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

/?page2 => /page/2/


RewriteCond %{THE_REQUEST} " /\?page2 "
RewriteRule ^ http://site.ru/page/2/? [R=301,L]

Или так


RewriteCond %{QUERY_STRING} =page2
RewriteRule ^$ http://site.ru/page/2/? [R=301,L]

А по поводу http://site.ru/category4/?do=cat&category=load/111/4, то там подвох в том, что пока директива Redirect модуля mod_alias делает свое дело, mod_rewrite уже сделал свое дело и дописал параметры do=cat&category=load/111/4


RewriteCond %{THE_REQUEST} " /\?page2 "
RewriteRule ^ http://site.ru/page/2/? [R=301,L]

RewriteRule ^load/111/([1-4]) http://site.ru/category$1/? [R=301,L]

RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L]
vip1232
На сайте с 12.05.2009
Offline
88
#5
jkm:
/?page2 => /page/2/

RewriteCond %{THE_REQUEST} " /\?page2 "
RewriteRule ^ http://site.ru/page/2/? [R=301,L]

Или так

RewriteCond %{QUERY_STRING} =page2
RewriteRule ^$ http://site.ru/page/2/? [R=301,L]


А по поводу http://site.ru/category4/?do=cat&category=load/111/4, то там подвох в том, что пока директива Redirect модуля mod_alias делает свое дело, mod_rewrite уже сделал свое дело и дописал параметры do=cat&category=load/111/4

RewriteCond %{THE_REQUEST} " /\?page2 "
RewriteRule ^ http://site.ru/page/2/? [R=301,L]

RewriteRule ^load/111/([1-4]) http://site.ru/category$1/? [R=301,L]

RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L]

Благодарю, заюзал этот способ, только без адреса сайта сделал. Спасибо.


RewriteCond %{THE_REQUEST} " /\?page2 "
RewriteRule ^ /page/2/? [R=301,L]

Проблему можно считать решенной!

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