Перейти к содержимому



Как исправить RewriteRule?

#1 borus

borus
  • Пользователь
  • 66 сообщений
  • Репутация: 2
0

Отправлено 09 Декабрь 2013 - 13:14

Здравствуйте
Пытаюсь сделать так, чтобы работало перенаправление ссылок вида "сайт/component/virtuemart/категория/товар?Itemid=0" на ссылки "сайт/категория/товар"
Вот такую строку написал в .htaccess после стандартных RewriteEngine On и RewriteBase /:
RewriteRule ^component\/virtuemart\/(.*)\?Itemid=0$ $1
такой вариант тоже ничего не меняет:
RewriteRule ^\/component\/virtuemart\/(.*)\?Itemid=0$ $1
Ноль реакции.
Обычные редиректы "Redirect 301 ..." работают.
Привожу на всякий случай .htaccess:
Спойлер

Где я допустил ошибку?

 

 

  • 0

#2 miketomlin

miketomlin
  • Пользователь
  • 261 сообщений
  • Репутация: 35

Отправлено 12 Декабрь 2013 - 17:59

Как-то так:
RewriteCond %{QUERY_STRING} ^Itemid=0$ [NC]
RewriteRule ^component/virtuemart/(.*)/(.*)$ /$1/$2

  • 0

#3 borus

borus
    Topic Starter
  • Пользователь
  • 66 сообщений
  • Репутация: 2

Отправлено 13 Декабрь 2013 - 14:05

Благодарю. Почему-то не сработал вариант
  • 0

#4 miketomlin

miketomlin
  • Пользователь
  • 261 сообщений
  • Репутация: 35

Отправлено 13 Декабрь 2013 - 18:33

Попробуйте убрать условие (строка с RewriteCond). Само правило работает?

Так будет правильнее:
RewriteRule ^component/virtuemart/([^/]*)/([^/]*)/?$ /$1/$2
Я извиняюсь за то, что заставляю вас экспериментировать. Просто сам сейчас не могу проверить.
  • 0

#5 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 13 Декабрь 2013 - 22:13

RewriteRule ^/component/virtuemart/([0-9a-z_-]*)/([0-9a-z_-]*)$ /component/virtuemart/$1/$2?Itemid=0 [L,QSA]

попробуйте но не гарантирую что сработает, так бы точно знать какие могут быть символы в категории и товар ну и Itemid всегда равен 0
  • 0

#6 borus

borus
    Topic Starter
  • Пользователь
  • 66 сообщений
  • Репутация: 2

Отправлено 16 Декабрь 2013 - 16:37

Попробуйте убрать условие (строка с RewriteCond). Само правило работает?

Так будет правильнее:

RewriteRule ^component/virtuemart/([^/]*)/([^/]*)/?$ /$1/$2
Я извиняюсь за то, что заставляю вас экспериментировать. Просто сам сейчас не могу проверить.

Благодарю за попытку помочь. Похоже заработало, правда не пойму как именно :) сейчас буду экспериментировать
  • 0

#7 miketomlin

miketomlin
  • Пользователь
  • 261 сообщений
  • Репутация: 35

Отправлено 17 Декабрь 2013 - 11:02

OK, если этот вариант работает, попробуйте добавить условие, которое я опустил (см. выше).

Просмотрел сообщения в теме, возникли сомнения... Вам какой rewrite нужен-то?

"сайт/component/virtuemart/категория/товар?Itemid=0" на ссылки "сайт/категория/товар"

Так или наоборот?
  • 0

#8 borus

borus
    Topic Starter
  • Пользователь
  • 66 сообщений
  • Репутация: 2

Отправлено 18 Декабрь 2013 - 15:19

OK, если этот вариант работает, попробуйте добавить условие, которое я опустил (см. выше).

Просмотрел сообщения в теме, возникли сомнения... Вам какой rewrite нужен-то?

Так или наоборот?

Именно так. Нет, что-то не работают перенаправления. Ну вот например ссылка сайт/component/virtuemart/statuetki/statuetka-soslan-na-kamne-detail?Itemid=0. Она должна стать сайт/statuetki/statuetka-soslan-na-kamne-detail
Может я не в том месте .htaccess вставляю?
Я вставляю после строки
RewriteRule ^(.+)/$ /$1 [R=301,L]

  • 0

#9 borus

borus
    Topic Starter
  • Пользователь
  • 66 сообщений
  • Репутация: 2

Отправлено 18 Декабрь 2013 - 16:35

может у меня неверные ожидания? я ожидаю, что нажав на ссылку вида сайт/component/virtuemart/statuetki/statuetka-soslan-na-kamne-detail?Itemid=0 в браузере в адресной строке должна появиться строка сайт/statuetki/statuetka-soslan-na-kamne-detail. Может строка остаётся той же, но вывод дается со страницы с адресом сайт/statuetki/statuetka-soslan-na-kamne-detail? Я пытаюсь перенаправлениями решить проблему дублей страниц. То есть ссылки делаю правильными, а проиндексированные перенаправляю. Как мне понять, что перенаправление работает?
  • 0

#10 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 18 Декабрь 2013 - 17:56

А у Вас такой вариант не получится

сайт/statuetki/statuetka-soslan-na-kamne-detail

ибо перед statuetki надо ещё что-то добавить например shop или похожее

Будет примерно так

RewriteRule ^/shop/([a-z]*)/([-a-z]*)$ /component/virtuemart/$1/$2?Itemid=0 [L,QSA]

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru