Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


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>
Надіслати
Поділитися на інших сайтах


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

RewriteCond %{QUERY_STRING} ^_route_=cat_10004.htm$
RewriteRule ^(.*)$ http://aniteks.ru/instrumenty/elektroinstrument/elektricheskie-miksery? [R=301,L]
Надіслати
Поділитися на інших сайтах

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

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

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

 

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

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

Надіслати
Поділитися на інших сайтах


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

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

слэш в конце?

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

Надіслати
Поділитися на інших сайтах

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

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

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

Надіслати
Поділитися на інших сайтах


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

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

слэш в конце?

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

 

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

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

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

Надіслати
Поділитися на інших сайтах


# 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]

не работает?

Надіслати
Поділитися на інших сайтах

# 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, но это не важно) - не работает.

 

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

Надіслати
Поділитися на інших сайтах


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

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

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

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

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

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

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

Надіслати
Поділитися на інших сайтах

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

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

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

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

Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах

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

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

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

 

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

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

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

Надіслати
Поділитися на інших сайтах


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

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

нуок... :(

:ugeek:

Надіслати
Поділитися на інших сайтах

  • 2 years later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.