Jump to content

Recommended Posts

Задача. со стороны, кажется простой - необходимо прописать редиректы. Но проблема есть, о ней позднее. Сначала введу в суть.

Есть старый домен (profinstrument.ru), на нем 12 лет успешно работает сайт без админки и с файловой системой хранения данных. Обновление прайса в нем - это целая эпопея. Пришлось писать не один десяток скриптов - для каждого поставщика, групп товаров и производителей, чтобы автоматизировать процесс. Однако, без ручной работы, все равно не обходится. Было принято решение создать новый сайт на ocStore (aniteks.ru) и подменить старый сайт новым.

Естественно, все товары те же, большинство категорий тоже сохранились, но вот адреса стали ЧПУ.

Итак, я могу на старом сайте в .htaccess прописать 301 редиректы для каждой категории и все будет работать. НО - отправлять-то он будет на новый домен, а мне необходимо сохранить именно тот домен - старый и заслуживший свою репутацию. Все бы ничего, но если я те же редиректы вношу в .htaccess нового сайта (на ocStore) - он правильно перенаправляет, но с одним косяком, который все портит - он дописывает в конец ЧПУ адреса строку параметров ?_route_=cat_10004.htm

cat_10004.htm - это старый адрес страницы, который проиндексирован поисковиками и имеет неплохие позиции.

именно с него я и делаю переадресацию:

Redirect 301 /cat_10004.htm http://aniteks.ru/instrumenty/elektroinstrument/elektricheskie-miksery

Но именно это CMS зачем-то дописывает к ЧПУ.

как от этого избавиться - не могу понять.

 

Итак, задача - прописать в .htaccess правило, позволяющее использовать редирект со страниц /cat_10004.htm

на страницы /instrumenty/elektroinstrument/elektricheskie-miksery без передачи параметров в конце.

 

 

Вариант сделать пока со старого сайта редирект на новый, а когда новый полностью проиндексируется - перенести его на старый домен и уже с нового домена на старый сделать редирект самого домена рассматривается в последнюю очередь. Мне нужно решить конкретную задачу, или получить обоснованный ответ о том, что это невозможно. И только в последнем случае я буду делать переход в два этапа.

 

Спасибо тем, кто осилил (прочитал). Человеческое спасибо тому, кто реально поможет, подскажет.

.htaccess на новом домене стандартный, ocStore'овский.

# 1.To use URL Alias you need to be running apache with mod_rewrite enabled. 

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/ 

Options +FollowSymlinks

# Prevent Directoy listing 
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini|log)">
 Order deny,allow
 Deny from all
</FilesMatch>

RewriteBase /
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]
#RewriteRule ^([^/]*)/([^/]*)$ /index.php?route=$1/category&path=$2 [L]

### Additional Settings that may need to be enabled for some servers 
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200

# 7. disable open_basedir limitations
# php_admin_value open_basedir none

# Кеширование картинок, js и css
FileETag MTime Size
<ifmodule mod_expires.c>
 <filesmatch ".(jpg|gif|png|js|css|gz)$">
 ExpiresActive on
 ExpiresDefault "access plus 1 month"
 </filesmatch>
</ifmodule>

<IfModule mod_headers.c>
  <FilesMatch "\.(jpg|gif|png)$">
    Header append Cache-Control "public"  
  </FilesMatch>
</IfModule>

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|gz)$">
    Header append Vary Accept-Encoding
    Header append Cache-Control "private"  
  </FilesMatch>
</IfModule>

Share this post


Link to post
Share on other sites

Спасибо за предложенную идею, но я такое пробовал.
Выдает вот что:

The requested URL /instrumenty/elektroinstrument/elektricheskie-miksery was not found on this server.

Причем, адрес каким-то волшебным образом меняется на profinstrument!!! (видимо, кэш)

http ://profinstrument.ru/instrumenty/elektroinstrument/elektricheskie-miksery?_route_=cat_10004.htm

Хотя в .htaccess ясно прописано aniteks.ru

 

Попробовал на другом адресе:

http://aniteks.ru/cat_10001.htm

Естественно, добавил его в htaccess и вот оно что выдает:

 

http ://aniteks.ru/instrumenty/elektroinstrument/shurupoverty-akkumulyatornye?_route_=cat_10001.htm

К сожалению, страница не найдена.

 

Может быть, если порядок правил поменять поможет? То есть, какие-то правила перенести в начало, какие-то в конец.

Я уже весь мозг себе сломал - целый день только с этим и колупаюсь!

Share this post


Link to post
Share on other sites

?_route_=
служебный обязательный параметр для ЧПУ в opencart - доступен, по факту, только внутри процесса rewrite и не попадает в генерируемые движком ссылки.

если он у вас "где-то выползает" - курите доки и правила apache:mod_rewite.

слэш в конце?

порядок правил в .htaccess?

Share this post


Link to post
Share on other sites

Попробуйте это

Share this post


Link to post
Share on other sites

Попробуйте это

Не помогло, к сожалению:

RewriteCond %{HTTP_HOST} ^www\.aniteks\.ru$
RewriteRule ^cat_10005\.htm$ http ://aniteks.ru/instrumenty/elektroinstrument/shurupoverty-setevye? [L,R=301]

 

 

К сожалению, страница не найдена.

и адрес не переписался: aniteks.ru/cat_10005.htm

Share this post


Link to post
Share on other sites
?_route_=
служебный обязательный параметр для ЧПУ в opencart - доступен, по факту, только внутри процесса rewrite и не попадает в генерируемые движком ссылки.

если он у вас "где-то выползает" - курите доки и правила apache:mod_rewite.

слэш в конце?

порядок правил в .htaccess?

 

Я в первом сообщении выложил свой листинг htaccess под спойлером.

Я бы с радостью покурил, да везде одно и то же. А по моей задаче нигде ничего нет.

Я и реально-то сегодня всего 2 сигареты за весь день выкурил из-за того, что доки mod_rewrite курю :)

Share this post


Link to post
Share on other sites
# 301 --- http://profinstrument.ru/cat_10004.htm => http://aniteks.ru/instrumenty/elektroinstrument/elektricheskie-miksery
RewriteCond %{HTTP_HOST} ^profinstrument\.ru$
RewriteRule ^cat_10004\.htm$ http://aniteks.ru/instrumenty/elektroinstrument/elektricheskie-miksery? [L,R=301]

не работает?

Share this post


Link to post
Share on other sites
# 301 --- http://profinstrument.ru/cat_10004.htm => http://aniteks.ru/instrumenty/elektroinstrument/elektricheskie-miksery
RewriteCond %{HTTP_HOST} ^profinstrument\.ru$
RewriteRule ^cat_10004\.htm$ http://aniteks.ru/instrumenty/elektroinstrument/elektricheskie-miksery? [L,R=301]

не работает?

 

Алекс, в 6 сообщении точно такой же код, (только вместо 10004 стоит 10005, но это не важно) - не работает.

 

И мне надо в пределах одного домена эту переадресацию сделать. С одного домена на другой без проблем все работает. Я так сделаю если будет доказано, что не реально сделать то, что я описал выше. Но фишка именно в том, чтобы сделать рабочими проиндексированные ранее ссылки. Не переслать на другой домен, а в пределах одного домена сделать правильную переадресацию.

Share this post


Link to post
Share on other sites

>> в пределах одного домена

ну так домен убрать из правил

^cat_10004\.htm$ /instrumenty/elektroinstrument/elektricheskie-miksery/ [L,R=301]
>> не работает.

1. порядок правил в .htaccess

добавляйте свои после

RewriteBase /
ДО всех родных правил движка.

2. коды в @[L,R=301]@

Share this post


Link to post
Share on other sites

>> в пределах одного домена

ну так домен убрать из правил

^cat_10004\.htm$ /instrumenty/elektroinstrument/elektricheskie-miksery/ [L,R=301]
>> не работает.

1. порядок правил в .htaccess

добавляйте свои после

RewriteBase /
ДО всех родных правил движка.

2. коды в @[L,R=301]@

 

 

Спасибо, кажется работает. Сейчас еще потестирую.

Работает вот так:

RewriteBase /
RewriteCond %{HTTP_HOST} ^aniteks\.ru$
RewriteRule ^cat_10009\.htm$ /instrumenty/stanki/mayatnikovye-pily? [L,R=301]

Второй пункт не понял.

Пробовал сделать вот так:

RewriteBase /
RewriteCond %{HTTP_HOST} ^aniteks\.ru$
RewriteRule ^cat_10009\.htm$ /instrumenty/stanki/mayatnikovye-pily? @[L,R=301]@

Не работает. САЙТ не работает - весь сайт.

 

Так что, первого пункта было достаточно. Однако, все равно, хотелось бы узнать, что означал второй пункт и на примере увидеть, как нужно было с ним поступить.

Кстати, а RewriteCond здесь точно нужен?

Вроде из без него должно отрабатывать.

 

 

Ну и, еще раз, огромное Человеческое спасибо afwollis - гуру htaccess.

кстати, все время хочется написать слово с аватарки вместо ника... особенно в этой теме, после суток головоломки :)

Share this post


Link to post
Share on other sites

>> 2. коды в @[L,R=301]@

имелось ввиду, что вам надо покурить документацию apache по mod_rewrite для кодов, используемых в квадратных скобках (вдруг для вашего случая требуется не @L,R=301@, а что-то другое.

http://httpd.apache.org/docs/current/rewrite/flags.html

@RewriteCond@ для проверки на определенные параметры.

для простой переадресации одного адреса на другой этот параметр не нужен.

http://httpd.apache.org/docs/current/rewrite/intro.html

http://httpd.apache.org/docs/current/rewrite/remapping.html

спасибо, но я не гуру htaccess.

это простая логика.

Share this post


Link to post
Share on other sites

Короче, собаки не нужны - просто надо было подобрать верные параметры перенаправления? Все хорошо, L,R=301 в самый раз.

Не всегда все логично. По простой логике должно было работать и то, что я изначально писал - через Redirect 301, а не RewriteRule.

Кого назначить гуру - решает электорат, а не номинант. :)

 

P.S. - у меня тут столько гемора с переписыванием сайта, что уже не всегда даже самое простое решение удается найти, сочиняю велосипеды. Я сейчас делал в backend дополнительное поле "Краткое описание" в карточке товара - немного лишнего написал, потом убрал, когда догнал, что это лишнее. Чтобы добавить поле, заставить его работать и выводить эти данные в категории в списке товаров вместо большого описания, пришлось 7 файлов перелопатить и добавить поле в таблицу oc_product_description. Задача была выводить там не описание, а параметры (технические характеристики, записанные в строку). Раньше выводил характеристики в столбик из атрибутов (для чего тоже приходилось переписывать несколько файлов), но сегодня у моего "заказчика" пришло новое озарение - он захотел уменьшить картинки в списке товаров до размера иконки и вывести строчку параметров - чтобы больше товаров на экране без перемотки было видно. Пример.

Выбесил меня так, что я был готов предложить ему простой прайс выводить на одной странице простыней и не париться с сайтом... 

Короче, работа мама не горюй, но это уже история для другой ветки форума.

Share this post


Link to post
Share on other sites

верно - собаки были только для "выделения текста".

>> Кого назначить гуру решает электорат, а не номинант. :)

нуок... :(

:ugeek:

Share this post


Link to post
Share on other sites

Надо в RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]  убрать QSA . Что бы получило: RewriteRule ^([^?]*) index.php?_route_=$1 [L]

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By malinator
      Добрый день, подскажите где может быть редирект такой:
      для всех карточек товара одинаково работает: https://site.ru/stranica?что_угодно_напишите
      перекидывает на https://site.ru/stranica
      т.е. при заходе на страницу https://site.ru/stranica?что_угодно_напишите никаких параметров не остается в адресной строке и происходит 301 редирект
       
      Помогите разобраться. Заранее спасибо.
       
      PS. ответ на вопрос - 
       
       
    • By Otvet
      Умный менеджер редиректов. Эффективен при переносе сайта на Opencart, изменении структуры и других операциях требующих редиректы.
      Позволяет перенаправлять со старых/битых страниц на новые как вручную так и автоматически благодаря функции Smart Redirect
       
      Главные отличительные особенности на фоне конкурентов:
      отсутствие влияния на скорость работы сайта (редиректы работают только если страница не найдена) Smart Redirect - автоматический поиск новой страницы и редирект безопасность (редирект не сработает если страница существует и была занесена с список по ошибке) гибкие редиректы по маске, возможность выбора вхождений выбор какие редиректы из БД, какие из файла редиректы с хвостов index.php Smart Redirect или "умный редирект": 
      Функция автоматического поиска страницы на которую необходимо направить посетителя, в случае если какая либо страница не найдена
      Допустим был сайт с адресами вида  site.com/item/tapochki-belie-m24.html
      Теперь стало new-site.com/mens/tapki/tapochki-belie-m24
      И так 150 категорий и 30 тыс товаров, это даже с редиректами по шаблону куча работы и условий
      с умным редиректом модуль сам проанализирует адрес, сопоставит и перенаправит на новый актуальный
      не только товары но и категории, производители, инфостраницы
       
      .htaccess
      Файл htaccess используется при каждом обращении к сайту, при открытии одной страницы идет от 1 до нескольких десятков обращений, при этом каждый раз происходит обработка правил. Поэтому не рационально засорение htaccess единичными правилами. Кроме того огромное кол-во жалоб на ошибки после манипуляций в htaccess на форуме на неработоспособность сайта или чаще на страницы с ..._route_=... .
      Используйте htaccess только для глобальных правил вроде переадресации с/на WWW, https, ...
    • By Otvet
      320.00 руб
      Скачать/Купить дополнение


      Умные редиректы и перенос FX Redirect&Migrate Manager

       
      Умный менеджер редиректов. Эффективен при переносе сайта на Opencart, изменении структуры и других операциях требующих редиректы.
      Позволяет перенаправлять со старых/битых страниц на новые как вручную так и автоматически благодаря функции Smart Redirect
       
      Главные отличительные особенности на фоне конкурентов:
      отсутствие влияния на скорость работы сайта (редиректы работают только если страница не найдена) Smart Redirect - автоматический поиск новой страницы и редирект безопасность (редирект не сработает если страница существует и была занесена с список по ошибке) гибкие редиректы по маске, возможность выбора вхождений выбор какие редиректы из БД, какие из файла редиректы с хвостов index.php Smart Redirect или "умный редирект": 
      Функция автоматического поиска страницы на которую необходимо направить посетителя, в случае если какая либо страница не найдена
      Допустим был сайт с адресами вида  site.com/item/tapochki-belie-m24.html
      Теперь стало new-site.com/mens/tapki/tapochki-belie-m24
      И так 150 категорий и 30 тыс товаров, это даже с редиректами по шаблону куча работы и условий
      с умным редиректом модуль сам проанализирует адрес, сопоставит и перенаправит на новый актуальный
      не только товары но и категории, производители, инфостраницы
       
      .htaccess
      Файл htaccess используется при каждом обращении к сайту, при открытии одной страницы идет от 1 до нескольких десятков обращений, при этом каждый раз происходит обработка правил. Поэтому не рационально засорение htaccess единичными правилами. Кроме того огромное кол-во жалоб на ошибки после манипуляций в htaccess на форуме на неработоспособность сайта или чаще на страницы с ..._route_=... .
      Используйте htaccess только для глобальных правил вроде переадресации с/на WWW, https, ...
      Добавил Otvet Добавлено 28.10.2017 Категория SEO, карта сайта, оптимизация Системные требования Сайт разработчика http://full-index.ru/ Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет Старая цена  
    • By Otvet
      Пакет дополнений к модулю Full IndeX, отдельно от которого работа данных дополнений невозможна или неполноценна
      Включает в себя:
      FX Redirects Manager AddOn FX Manufacturers AddOn FX Yandex noindex AddOn  
      FX Redirects Manager
      Менеджер редиректов. Позволяет перенаправлять со старых/битых страниц на новые. В дальнейшем будет работать и на любых иных страницах.
      Главные отличительные особенности на фоне конкурентов:
      отсутствие влияния на скорость работы сайта (редиректы работают только если страница не найдена) безопасность (редирект не сработает если страница существует и была занесена с список по ошибке)  
      Новый функционал:
      редиректы по маске (beta) редиректы не только со старых/битых страниц но и с любых иных (запрос)
      При наличии спроса будет добавлено:
      редиректы из файла  
       
      FX Manufacturers
      Модуль создающий подкатегории вида Категория/Бренд и выводящий меню производителей в категориях для перехода по ним. Возможна автономная работа, но Мета теги и Заголовки без Full Index не будут уникальны.
      Для чего? Создания посадочных страниц в первую очередь, ибо запросы товара с уточнением производителя практически всегда входят в СЧ-ВЧ
      Функционал:
      Вывод меню брендов (виджет или как угодно назвать можно) Исправление ссылок пагинации/сортировки с учетом производителя Добавление в хлебные крошки Совместимость с OCFilter  
       
      FX Yandex noindex
      Дополнения добавляет опции позволяющие закрыть от индексации повторяющиеся сквозные блоки тегом <!--noindex-->, тем самым сократить дублирующийся контент на страницах навигации
      Работает в паре с Full IndeX 4
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.