перенаправление 301 в opencart

#apache #.htaccess #redirect #opencart

#apache #.htaccess #перенаправление #opencart

Вопрос:

Я использую OpenCart 1.5.6 и недавно перенес свой магазин из поддомена в основной домен. Теперь я пытаюсь перенаправить некоторые из старых статических страниц категорий на фактические страницы категорий / продуктов opencart.

Вот моя строка .htaccess:

 Redirect 301 /old-category.html http://www.mydomain.com/my-new-category
  

Это правило отлично работает для большинства моих URL-адресов, но для некоторых из них мне нужно:

http://www.mydomain.com/my-new-category?route=old-category.html

Некоторые люди предлагали вместо этого использовать RewriteRule или добавить знак вопроса в конце, я пробовал все это, но ничего не работает!

Я также попытался ввести свои правила до и после следующего блока:

 RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
  

У кого-нибудь есть идеи?

Ответ №1:

Это должно сработать:

 RewriteEngine On

RewriteRule ^old-category.html$ http://www.mydomain.com/my-new-category [L,NC,R=301]

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^(. )$ index.php?_route_=$1 [L,QSA]
  

Обязательно протестируйте это в новом браузере, чтобы избежать проблем с кэшированием 301.

Комментарии:

1. Большое вам спасибо, сработало как шарм: D могу я спросить, что именно было не так?

2. Пожалуйста. правило 301 должно предшествовать другим правилам, и вам необходимо перезапустить браузер (или очистить кэш), чтобы избежать старого кэша 301 в браузере.

Ответ №2:

Я надеюсь, что это сработает для вас

 RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

Redirect 301 /old-category.html http://www.example.com/my-new-category?
  

Ответ №3:

У меня проблема с перенаправлением 301 с большинства страниц категорий / продуктов с моего старого сайта.

Например, я сделал перенаправление 301 со старой страницы

 /shop/dekorativnye-plenki/ category/29-derevo?route= product/categoryamp;path=25_29
  

на новую страницу

 /dekorativnye-plenki/derevo
  

Но sever перенаправляет меня на несуществующую страницу

 /dekorativnye-plenki/derevo?_ route_=shop/dekorativnye- plenki/category/29-derevo
  

Комментарии:

1. Вы должны опубликовать это как свой собственный поток. Не в качестве комментария здесь.