Как сделать редирект (301, 302). Общая тема

NV
На сайте с 30.10.2012
Offline
30
#301
'[umka:
;14732946']RewriteEngine on
RewriteCond %{QUERY_STRING} ^Itemid=0$
RewriteRule ^component/jshopping/product/view/123/725$ /test.html? [R=301,L]

Большое спасибо.

Но увы не работает.

А можно как нибудь удалять из урла ?Itemid=0

А уже потом моим редиректом?

Samail
На сайте с 10.05.2007
Offline
361
#302

noVe, в каком случае редирект нужен? Если ссылка на компонент jshopping или все у которых Itemid=0?

noVe:
Но не работает с ?Itemid=0.

Вопросительный знак экранируйте \?Itemid=0

S
На сайте с 30.09.2016
Offline
469
#303
noVe:
редирект 301 через .htaccess для ссылок вида

То есть,что значит "вида"? Если всё, что с Itemid=0, то

RewriteCond %{QUERY_STRING} ^Itemid=0.*$
RewriteRule ^(.*)$ test.html [R=301,L]
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
NV
На сайте с 30.10.2012
Offline
30
#304
Samail:
noVe, в каком случае редирект нужен? Если ссылка на компонент jshopping или все у которых Itemid=0?

Вопросительный знак экранируйте \?Itemid=0

Ссылки такого вида

component/jshopping/product/view/123/725?Itemid=0

component/jshopping/product/view/5/23?Itemid=0

Например, 123/725 - первая это id категории, второе id товара

?Itemid=0 - не знаю зачем там, но есть во всех ссылках каталога в конце.

Надо редирект с таких ссылок на новые чпу

Экранирование не помогло.

---------- Добавлено 20.10.2016 в 15:02 ----------

Sitealert:
То есть,что значит "вида"? Если всё, что с Itemid=0, то
RewriteCond %{QUERY_STRING} ^Itemid=0.*$

RewriteRule ^(.*)$ test.html [R=301,L]

Ссылки такого вида

component/jshopping/product/view/123/725?Itemid=0

component/jshopping/product/view/5/23?Itemid=0

Например, 123/725 - первая это id категории, второе id товара

?Itemid=0 - не знаю зачем там, но есть во всех ссылках каталога в конце.

Надо редирект с таких ссылок на новые чпу

Ваш код не помог.

Samail
На сайте с 10.05.2007
Offline
361
#305
noVe:
Надо редирект с таких ссылок на новые чпу

То есть вы для каждого товара собираетесь в ручную редиректы прописывать? При том что у вас только категорий там больше сотни? ЧПУ ссылки сам jshopping создаёт? По старым страницы открываются ...и да после изменений в .htaccess проверяйте результат хромом в режиме инкогнито, потому что "не помогает" возможно потому что старые редиректы кешируются браузером.

S
На сайте с 30.09.2016
Offline
469
#306

А не проще ли сразу прописать в Джумле правильные ссылки, а не грузить апач кучей лишних редиректов? Зачем формировать Itemid=0?

NV
На сайте с 30.10.2012
Offline
30
#307
Samail:
То есть вы для каждого товара собираетесь в ручную редиректы прописывать? При том что у вас только категорий там больше сотни? ЧПУ ссылки сам jshopping создаёт? По старым страницы открываются ...и да после изменений в .htaccess проверяйте результат хромом в режиме инкогнито, потому что "не помогает" возможно потому что старые редиректы кешируются браузером.

Да, для каждой. Не вручную - написан скрипт на php, который генерирует для каждой ссылки. Мне бы рабочий пример только :)

Я проверял - не работает. Если бы ссылки были без этого ?itemid то мой код работает. А с ними ноль реакция, даже когда экранирую знак вопроса.

У меня в голове только единственный вариант через php проверять урл, отрезать ?itemid перенаправлять на урл без него, а дальше уже моим кодом. В итоге будет перенаправлять куда надо, но это не 301 редирект и вес страниц, как понимаю, потеряется.

---------- Добавлено 20.10.2016 в 18:28 ----------

Sitealert:
А не проще ли сразу прописать в Джумле правильные ссылки, а не грузить апач кучей лишних редиректов? Зачем формировать Itemid=0?

Был сделан редизайн сайт. С joomla перешли на opencart - itemid это наследие предыдущих разработчиков, судя по тому, что сделали с урлами - мастерами сео :)

---------- Добавлено 20.10.2016 в 18:29 ----------

Может есть вариант через .htaccess 301 редиректом отправлять на урл с отрезанным в конце ?itemid а дальше уже мои кодом?

Samail
На сайте с 10.05.2007
Offline
361
#308


RewriteCond %{THE_REQUEST} " /(.*)component/jshopping/product/view/123/725(.*) "
RewriteRule ^ http://site.ru/test.html? [R=301,L]


---------- Добавлено 21.10.2016 в 03:16 ----------

noVe:
У меня в голове только единственный вариант через php проверять урл, отрезать ?itemid перенаправлять на урл без него

Тогда уж проще сразу php скриптом и отправлять на нужную страницу.

S
На сайте с 30.09.2016
Offline
469
#309

Короче, работает вот это:

RewriteCond %{QUERY_STRING} ^Itemid=0.*$ [NC]
RewriteRule ^(.*)$ /test.html? [R=301,L]
Это примерно то же, что написал [umka], но с учётом разных урлов, вариантов Itemid (возможно продолжение) и регистронезависимости.
NV
На сайте с 30.10.2012
Offline
30
#310
Samail:

RewriteCond %{THE_REQUEST} " /(.*)component/jshopping/product/view/123/725(.*) "
RewriteRule ^ http://site.ru/test.html? [R=301,L]


---------- Добавлено 21.10.2016 в 03:16 ----------


Тогда уж проще сразу php скриптом и отправлять на нужную страницу.

Спасибо, ваш код работает!

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