0

Я пытаюсь перенаправить с URL-адреса Cscart на URL-адрес Opencart, но кажется, что он не работает.Cscart 301 перенаправление на Opencart

Старый URL (cscart)

https://www.example.com/index.php?dispatch=categories.view&category_id=1430 

новый URL (OpenCart)

https://www.example.com/index.php?route=product/category&path=1746 

Я хочу сделать это руководство в течение первых 10 основных категорий и всех других подкатегорий из cscart перенаправить к https://www.example.com домашняя страница.

Как я могу добиться этого? Кроме того, новый url использует https.

Спасибо заранее -Konstantinos

ответ

0

простой, ручной способ будет

RewriteCond %{QUERY_STRING} dispatch=categories.view&category_id=1430 
RewriteRule ^index.php$ /index.php?route=product/category&path=1746 [R,L] 

и так далее для всех других отображений категории.


Альтернативой может быть, чтобы захватить старый category_id и использовать его с RewriteMap в подмене RewriteRule URI

RewriteMap categories txt:/path/to/categories.txt 

RewriteCond %{QUERY_STRING} dispatch=categories.view&category_id=(\d+) 
RewriteRule ^index.php$ /index.php?route=product/category&path=${categories:%1} [R,L] 

И в файле categories.txt, вы бы отображение старых к новым категории идентификаторами

1430 1746 
123 456 
987 333 

Смотрите также txt: Plain text maps для получения более подробной информации, или альтернативы к текстовым м ppings.

Недостатком этого метода нельзя использовать его в файле .htaccess только в основной конфигурации или разделе виртуального хоста.


Когда все работает как надо, вы можете изменить R к R=301.

+0

Привет, Олаф и спасибо! Я добавил следующее, но я получаю 500 внутренних ошибок сервера. Код следующий: '#RewriteMap категории txt: /httpdocs/newsite/htaccess/rewrite_categories.txt #RewriteCond% {QUERY_STRING} dispatch = categories.view & category_id = (\ d +) #RewriteRule^index.php $/index ? .php маршрут = продукт/категория и путь = $ {категория:% 1} [R, L] ' – Konstantinos

+0

Кроме того, мой htaccess_categories.txt является следующим форматом, как вы предложили:' 451 1764 436 2157_2176 432 2157_2176 1450 2157_2176 552 2157_2176 1264 2157_2176 697 2157_2176 873 2157_2176 688 2157_2176' – Konstantinos

+0

Извините, я пропустил, что вы не можете использовать 'RewriteMap' в файлах .htaccess только в основной конфигурации или виртуальном хосте. Я соответствующим образом обновил ответ. –