Автор Тема: (Решено)Как настроить Redirect 301 в Prestashop 1.6.1.7?  (Прочитано 297 раз)

13 Сентября 2016, 09:32:58
  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте! Перенес сайт с Prestashop версии 1.4.4.0 на версию 1.6.1.7. В процессе этого url страниц товаров изменились. Решил прописать перенаправление каждой старой страницы сайта на соответствующую новую в таком виде: Redirect 301 /category.php?id_category=10 /10-category-name. Написал 100 таких редиректов, добавил их в конец файла .htaccess и был очень удивлен  :o тем, что они не работают. Прошу помощи в написании правильной переадресации, пока не поздно. Заранее благодарен всем откликнувшимся.
13 Сентября 2016, 09:49:22
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 2163
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
На index.php перенаправь с передачей параметров.
13 Сентября 2016, 10:38:22
Ответ #2
  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
На index.php перенаправь с передачей параметров.
Звучит красиво, но как это реализовать? Можете привести пример кода подходящего к моей ситуации? Старая ссылка сайт.ру/category.php?id_category=10 , новая ссылка сайт.ру/11-nashi-kontakty.
13 Сентября 2016, 10:49:22
Ответ #3
  • Пользователь
  • **
  • Сообщений: 98
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
RewriteRule ^category\.php$ /index.php?controller=category [QSA,L,NC,R=301]
аналогично с продуктами, CMS и т.д.
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype:vlad_stiff
13 Сентября 2016, 11:20:48
Ответ #4
  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
RewriteRule ^category\.php$ /index.php?controller=category [QSA,L,NC,R=301]
аналогично с продуктами, CMS и т.д.
Прошу прощения, но я так и не понял куда в этом выражении вставить category.php?id_category=10 и 11-nashi-kontakty. Пожалуйста, если не трудно, составьте выражение на моем примере. Ситуация критическая!
13 Сентября 2016, 12:29:05
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 2163
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
В htaccess добавь и все. Свое правило забуть.
13 Сентября 2016, 13:31:23
Ответ #6
  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В htaccess добавь и все. Свое правило забуть.
Вы наверное не поняли сути вопроса. Мне необходимо для каждой из 100 ссылок старого сайта сделать редирект на 100 ссылок нового. ID, названия у категорий, товаров и страниц cms абсолютно не совпадают.
Добавил в конец файла htaccess
RewriteRule ^category\.php$ /index.php?controller=category [QSA,L,NC,R=301]Это ничего не дало.
Вот содержимое файла htaccess
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
 
</IfModule>

RewriteEngine on

#Domain: site.ru
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|svg)$">
Header add Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

# start ~ module watermark section
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}*/admin/*'"
RewriteRule [0-9/]+/[0-9]+\.jpg$ - [F]
</IfModule>
# end ~ module watermark section
13 Сентября 2016, 14:46:06
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1194
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В начале добавляйте правила редиректа,  после RewriteEngine on
13 Сентября 2016, 15:14:55
Ответ #8
  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В начале добавляйте правила редиректа,  после RewriteEngine on
Скажите пожалуйста каков синтаксис этого правила применимо к моей ситуации.
13 Сентября 2016, 16:04:39
Ответ #9
  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавил в начале htaccess, после RewriteEngine on, RewriteRule ^category\.php$ /index.php?controller=category [QSA,L,NC,R=301] и с категориями этот вариант заработал. Наверное потому, что ID категорий совпадают. Поменял в выражении category на product -  выдает не те товары. Как же сделать редирект с конкретного товара на конкретный?
13 Сентября 2016, 17:54:34
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 13135
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
При обновлении ид не меняются. Товары могут быть перепутаны, если вы их импортировали после обновления.
13 Сентября 2016, 18:54:01
Ответ #11
  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
При обновлении ид не меняются. Товары могут быть перепутаны, если вы их импортировали после обновления.
Так и есть. Я не обновлял cms. На чистую 1.6.1.7 перенес категории, а затем товары. ID категорий сохранились и товары прописались в свои категории, но с новыми ID. Необходимо вручную сделать редирект для каждого из товаров. Если знаете, напишите пример такой переадресации. Старый /product.php?id_product=76 переадресация Новый /zernodrobilki-i-kormo-izmelchiteli/57-zernodrobilka-fermer-iz-05-115kvt-170kg-ch.html. 76 и 57 это id товара.
13 Сентября 2016, 19:36:17
Ответ #12
  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Может я не в том разделе тему создал?
13 Сентября 2016, 21:10:20
Ответ #13
  • Новичок
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я на старом сайте так делал
Redirect 301 /product.php?id_product=76 http://site.ru/zernodrobilki-i-kormo-izmelchiteli/57-zernodrobilka-fermer-iz-05-115kvt-170kg-ch.htmlв самом верху htaccess.
С prestashop не так давно знаком, но должно работать.
14 Сентября 2016, 07:10:06
Ответ #14
  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте! Перенес (не обновил) сайт с Prestashop версии 1.4.4.0 на версию 1.6.1.7. В процессе переноса id категорий сохранились и товары прописались в свои категории, но с новыми id, url страниц товаров тоже изменились. Решил прописать перенаправление каждой старой страницы сайта на соответствующую новую в таком виде: Redirect 301 /category.php?id_category=10 /10-category-name. Написал 100 таких редиректов, добавил их в конец файла .htaccess и был очень удивлен  :o тем, что они не работают. C категориями вопрос решился добавлением в htaccess выраженияRewriteRule ^category\.php$ /index.php?controller=category [QSA,L,NC,R=301] за что отдельное спасибо Vlad_Stiff. Необходимо вручную сделать редирект для каждого из товаров. Напишите пожалуйста пример редиректа. Старый url /product.php?id_product=76 , новый url /zernodrobilki-i-kormo-izmelchiteli/57-zernodrobilka-fermer-iz-05-115kvt-170kg-ch.html. 76 и 57 это id товара. Прошу помощи в написании правильной переадресации, пока не поздно. Заранее благодарен всем откликнувшимся.