Helloween

[Решено] Настройка редиректов

Рекомендуемые сообщения

Helloween    6

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

Есть старый домен (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>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mstkalenko    19

Задача. со стороны, кажется простой

RewriteCond %{QUERY_STRING} ^_route_=cat_10004.htm$
RewriteRule ^(.*)$ http://aniteks.ru/instrumenty/elektroinstrument/elektricheskie-miksery? [R=301,L]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Helloween    6

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

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 097

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

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

слэш в конце?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AlexDW    822

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Helloween    6

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

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

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

Поделиться сообщением


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

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

слэш в конце?

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AlexDW    822
# 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]

не работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Helloween    6
# 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, но это не важно) - не работает.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 097

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Helloween    6

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

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

^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.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 097

>> 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.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Helloween    6

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

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

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 097

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

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

нуок... :(

:ugeek:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
redkoo    6

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От Otvet

      300.00 руб
      Скачать/Купить дополнение


      FX AddOn Pack #1 = Редирект-менеджер + Категория/Бренд
      Пакет дополнений к модулю Full IndeX, отдельно от которого работа данных дополнений невозможна или неполноценна
      Включает в себя:
      FX Redirects Manager AddOn FX Manufacturers AddOn ... to be continue  
      FX Redirects Manager
      Менеджер редиректов. Позволяет перенаправлять со старых/битых страниц на новые. В дальнейшем будет работать и на любых иных страницах.
      Главные отличительные особенности на фоне конкурентов:
      отсутствие влияния на скорость работы сайта (редиректы работают только если страница не найдена) безопасность (редирект не сработает если страница существует и была занесена с список по ошибке)  
      Новый функционал:
      редиректы по маске (beta) редиректы не только со старых/битых страниц но и с любых иных (запрос)
      При наличии спроса будет добавлено:
      редиректы из файла  
      FX Manufacturers
      Модуль создающий подкатегории вида Категория/Бренд и выводящий меню производителей в категориях для перехода по ним. Возможна автономная работа, но Мета теги и Заголовки без Full Index не будут уникальны.
      Для чего? Создания посадочных страниц в первую очередь, ибо запросы товара с уточнением производителя практически всегда входят в СЧ-ВЧ
      Функционал:
      Вывод меню брендов (виджет или как угодно назвать можно) Исправление ссылок пагинации/сортировки с учетом производителя Добавление в хлебные крошки Совместимость с OCFilter Добавил Otvet Добавлено 03.01.2017 Категория Прочее Системные требования Full Index не ниже версии 3.9.9 Метод активации Автоматическая активация Ioncube Loader Нет OpenCart ocStore OpenCart.Pro, ocShop  
    • От Otvet
      Пакет дополнений к модулю Full IndeX, отдельно от которого работа данных дополнений невозможна или неполноценна
      Включает в себя:
      FX Redirects Manager AddOn FX Manufacturers AddOn ... to be continue  
      FX Redirects Manager
      Менеджер редиректов. Позволяет перенаправлять со старых/битых страниц на новые. В дальнейшем будет работать и на любых иных страницах.
      Главные отличительные особенности на фоне конкурентов:
      отсутствие влияния на скорость работы сайта (редиректы работают только если страница не найдена) безопасность (редирект не сработает если страница существует и была занесена с список по ошибке)  
      Новый функционал:
      редиректы по маске (beta) редиректы не только со старых/битых страниц но и с любых иных (запрос)
      При наличии спроса будет добавлено:
      редиректы из файла  
      FX Manufacturers
      Модуль создающий подкатегории вида Категория/Бренд и выводящий меню производителей в категориях для перехода по ним. Возможна автономная работа, но Мета теги и Заголовки без Full Index не будут уникальны.
      Для чего? Создания посадочных страниц в первую очередь, ибо запросы товара с уточнением производителя практически всегда входят в СЧ-ВЧ
      Функционал:
      Вывод меню брендов (виджет или как угодно назвать можно) Исправление ссылок пагинации/сортировки с учетом производителя Добавление в хлебные крошки Совместимость с OCFilter
    • От 599479421
      Добрый день! Подскажите пожалуйста, может кто то сталкивался с такой проблемой, в истории здесь не нашел. 
      у нас есть сайт: http://kameranabludenia.ru, была задача привязать к нему домен http://1kam.ru/ и сделать его основным, а от старого сделать редирект чтобы ссылки шли на уже новый сайт.  В итоге второй сайт (http://1kam.ru/ ) получился немного карявым, половина модулей не заработала и исчезла из админки (добавление товара,нитро ускоритель, блог) страницы категорий стали открываться неправильно. Программист сделал сначала оба сайта от одной базы, потом сделал для второго сайта свою базу, но ничего не помогло. Ищем теперь решение,или специалиста, чтобы исправить ситуацию. Буду рад любой помощи. Программист наш включил динамо, и не берется за работу (работает на фрилансе, поэтому имеет то, что имеем)
    • От Artorius
      Всем привет!
      Уважаемые форумчане, подскажите пожалуйста, какую команду нужно прописать в файле .htaccess, что бы настроить редирект на адрес главной страницы http://site.com/ с дублей http://site.com/? и http://site.com/?blabla 
      Всем заранее спасибо)
    • От alexsoftdev

      1 499.00 руб
      Скачать/Купить дополнение


      Модуль для Opencart - NeoSeo Менеджер Редиректов
      Выдача лицензии на Модуль для Opencart - NeoSeo Менеджер Редиректов происходит автоматически. При оформлении заказа, обязательно укажите доменное имя вашего сайта.
       
       
      ВНИМАНИЕ!!! Модуль не совместим с кешировщиками магазинов вроде boost.
      При переносе сайта нужно сохранить все внешние ссылки, тщательно составив карту редиректов ( перенаправлений ) со старых ссылок на новые. Это можно выполнить на уровне файла .htaccess, но это долго и мучительно. Более простой способ для выполнения этой задачи - воспользоваться модулем SOFORP Redirect Manager, который позволит выполнить данную задачу просто и элегантно.
      Преимущества данного модуля:
      Работает на всех солянках opencart. Поддерживается поиск по правилам!!! Работает со ссылками, похожими на внутренние ( содержащими ключевые слова category_id, product_id и т.д. ) Не боится количества инструкций Корректно обрабатывает & Поддерживает импорт и экспорт для csv формата Поддерживает разные коды перенаправления ( HTTP 301, HTTP 302, HTTP 307 ) Учитывает срок действия редиректа Правила можно включать и отключать Игнорирует случайно введенные пробелы в конце и начале ссылки Корректно отрабатывает джумла-ссылки без ЧПУ Корректно отрабатывает настройки магазина, сразу формируя редирект на http://www. или просто на Поддерживает маски в двух вариантах Периодически спрашивают а поможет ли наш модуль для переезда с одного домена на другой, без смены ссылок. Ответ - если поменялись не ссылки, а только домен, то вам вообще не нужен никакой модуль. Вам нужно просто грамотно настроить перенос домена - http://habrahabr.ru/post/168471/
      Как работают маски:
      Иногда случается так, что вы удалили категорию и у вас куча 404-х ошибок вида /ваша-категория/а-тут-какие-то-параметры. Понятное дело что можно составить редирект на каждую ссылку, но когда их тысячи, то возникает вопрос о целесообразности такого действия. Поэтому мы добавили возможность сделать два вида редиректов маской для того случая.
      Вид первый - без сохранения параметров. Т.е. вам нужно банально перекинуть все старые ссылки на какую-то одну страничку. Для этого в админке создается правило со следующими параметрами:
      Старый URL: /ваша-категория/*
      Новый URL: /новая-страница
      В итоге все старые несуществующие страницы будут переадресованы на одну единственную, а именно "/новая-страница". Это полезно, но чаще хочется еще и параметры сохранить. Для этой цели подойдет второй вид редиректа, он же "маска-маска".
      Старый URL: /старая-категория/*
      Новый URL: /новая-категория/*
      Отличительной особенностью является наличие маски и параметра Новый URL. В таком ключе если человек зайдет по ссылке /старая-категория/параметр-1, то попадет на ссылку /новая-категория/параметр-1.
      Ура, теперь можно безболезненно переименовывать категории ( ну почти )
      Требования:
      vqmod 2.4.1+ Opencart 1.5.* php 5.3 ioncube Лицензия:
      на ОДИН домен. Не на сайт, не на человека, не на студию. У вас несколько доменов подключены к одному сайту - значит вам нужно несколько лицензий. на использование ( допускается установка клиентам при покупке лицензий под них ), но не на перепродажу. Модули от NeoSeo это:
      Безупречное качество Дружественный интерфейс Богатая функциональность Высокое быстродействие Оперативная поддержка  
      Установка на примере опенкарт 2.Х ( для остальных смотрим инструкции внутри архива ):
      Запросите ключ лицензии по email license@neoseo.com.ua, при этом указав:
          - название сайта, на котором вы купили модуль. Например opencartforum.com
          - ваш ник на этом сайте, например, alexsoftdev
          - номер заказа на этом сайте, например 355446
          - основной домен сайта для активации лицензии, например lamoda.ru
          - тестовый домен сайта для разработки, например lamoda.neoseo.com.ua
      Распакуйте и загрузите ключ в корень сайта, рядом с robots.txt
      Если у вас правильно настроен и подключен ftp, то
      3.1. Установите архив целиком через Дополнения \ Установка расширений.
      Если же опенкарт настроен криво, то делаем это вручную:
      3.1. Распакуйте архив с модулем и загрузите содержимое папки upload на сайт
      3.2. В архиве есть файл install.xml, его переименовываете в install.ocmod.xml
           и загружаете через Дополнения \ Установка расширений
      Нажмите кнопку "Обновить" на страничке "Дополнения \ Модификаторы".
      Установите модуль посредством меню Дополнения \ Модули
      Установите права на просмотр модуля нужным пользователям
       
       
      Обновление:
      Удалите модификатор Повторите установку  
      Посмотреть работу модуля вы сможете тут:
      https://shop.neoseo.com.ua/admin/
      логин: admin
      пароль: admin
      Добавил alexsoftdev Добавлено 15.09.2014 Категория Прочее Системные требования PHP 5.3+vqmod 2.4.1 и выше для 1.5.Х, для 2.х хватит встроенного ocmod Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 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
      1.5.4.1
      1.5.3.1 ocStore 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.х
      OcShop 1.5.6.4.х  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу