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

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    20

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

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 099

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

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

слэш в конце?

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

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


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

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

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


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

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

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

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

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

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

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

нуок... :(

:ugeek:

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От bogdan281989
      Добрый день! Подскажите, возможно ли сделать редирект для всех страниц, которые содержат цифры в конце на такой же урл без цифр?
      Пример: 
      /mezhdunarodnaya-dostavka/rossiya/alekseevskaya-10576/
      перенаправить на 
      /mezhdunarodnaya-dostavka/rossiya/alekseevskaya/
       
      Буду благодарен если кто подскажет с решением или заготовкой htaccess
    • От Igor5
      Привет всем!
      в общем настраиваю файл htaccess для Опенкарт Pro 2.1.0.2.2
      в этом деле особо не знаток, поэтому хотелось бы услышать рекомендации более опытных вебмастеров.. тоесть все ли правильно прописано для правильного редиректа.. для сайта основным является вариант с https и без www
       
      # Основной редирект RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) # NOT MOVE - НЕ ТРОГАТЬ И НЕ ПЕРЕМЕЩАТЬ ЭТО ПРАВИЛО RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]      #Редирект 301 RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/ RewriteRule ^index\.html$ / [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ / [R=301,L] RewriteCond %{QUERY_STRING} ^route=common/home$ RewriteCond %{REQUEST_METHOD} !^POST$ RewriteRule ^index\.php$ http://%{HTTP_HOST}? [R=301,L] </IfModule>  
    • От Granled
      Здравствуйте! Задумал переезжать с теплой, ламповой и удобной как старые ботинки, но в глухую устаревшей версии 1.5.6 на более современную 2.3.
      За годы работы накопилась клиентская база, истории заказов и прочее.
      В связи с тем вопрос - как мне все это сохранить?
      Насколько совместимы базы данных для 1,5 и 2,3?
      То есть, могу ли я запросто перекинуть дамп базы оттуда сюда, или же мне придется выполнять какие либо дополнительные действия? Например, вручную переформатировать и переносить таблицы в новую БД?
    • От KegP
      Добрый вечер.
      Столкнулся с проблемой при выполнении следующей задачи:
      мне нужно посетителя, пришедшего с определённого сайта на определённую страницу, перенаправлять на нужную мне страницу.
       
      Имеем следующую строчки, которые не пашут, хотя, вроде бы, всё логично:
      RewriteCond %{HTTP_REFERER} ^http://(www\.)?site\.ru [NC] 
      RewriteRule ^/medical-products/ /vitamins/ [L,R]
       
      Ниже верхняя часть .htaccess
       
      # 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 Options +FollowSymlinks # Prevent Directoy listing Options -Indexes # Prevent Direct Access to files <FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))"> Require all denied ## For apache 2.2 and older, replace "Require all denied" with these two lines : # Order deny,allow # Deny from all </FilesMatch> # 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/ RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L] RewriteRule ^system/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] RewriteCond %{HTTP_REFERER} ^http://(www\.)?site\.ru [NC] RewriteRule ^/medical-products/ /vitamins/ [L,R] Заранее спасибо...
    • От Ostmetal
      Доброго времени суток.
       
      Необходимо корректно настроить .htaccess, немного неправильно работает 301 редирект. 
      По-умолчанию во все URL подставляется /
      Но URL https://mysite.com/callback должен работать без слеша
       
  • Последние посетители   0 пользователей онлайн

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