noVe

Рейтинг
30
Регистрация
30.10.2012
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 скриптом и отправлять на нужную страницу.

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

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:
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 - не знаю зачем там, но есть во всех ссылках каталога в конце.

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

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

'[umka:
;14732946']RewriteEngine on
RewriteCond %{QUERY_STRING} ^Itemid=0$
RewriteRule ^component/jshopping/product/view/123/725$ /test.html? [R=301,L]

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

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

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

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

Здравствуйте,

Подскажите, пожалуйста, как сделать редирект 301 через .htaccess для ссылок вида

http://site.ru/component/jshopping/product/view/123/725?Itemid=0

http://site.ru/test.html

Делаю так:

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

Но не работает с ?Itemid=0. Без него перенаправляет на вторую ссылку.

Сделал через java

if (document.location.href == "http://site.ru/#primer")
window.location.href = "http://site.ru/primer/";
jkm:

RewriteCond %{REQUEST_URI}?%{QUERY_STRING} =/itemnews.php?idn=300
RewriteRule ^ http://fish/test2.html? [L,R=301]

Или использовать переменную THE_REQUEST. Там будет полная строка запроса отправленная браузером "GET /itemnews.php?idn=300 HTTP/1.1".

RewriteCond %{THE_REQUEST} ^[A-Z]{3,7}\ /itemnews.php\?idn=300\ HTTP
RewriteRule ^ http://fish/test2.html? [L,R=301]

Огромнейшее спасибо, jkm!

siv1987:
RewriteEngine On
RewriteCond %{QUERY_STRING} =option=com_content&task=view&id=34&Itemid=40
RewriteRule ^index\.php /name-page.html? [R=301,L]

Огромное спасибо! Уже сам дошел, что надо использовать RewriteCond/RewriteRule, но на этом месте завис. Еще раз спасибо, siv1987.