Jump to content

Recommended Posts

Здравствуйте. Нужна помощь.

Есть 8000 проиндексированых страниц товаров.

Необходима переадресация: site/tovar-old на site/kategoria/podkategoria/tovar.html (при том что названия товаров, до и после, синтаксически разные, и в наследственном урле добавлен .html)

Вижу решение только в написании к каждому товару правила, но выдержит ли сервер постоянную обработку 8000 строк в .htaccess? и разумно ли это?

Может как вариант, на некоторые важные страницы "построчный" редирект, а все остальные правилом переадресовать на главную?

В таком случае, подскажите как правильно организовать "построчный" редирект, поскольку с правилами в .htaccess:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

при Redirect 301 /tovar-old http://site/kategori...oria/tovar.html в конец урла подставляется ?_route_=tovar-old и в результате "страница не найдена"

Второй вариант. При добавлении правила

RewriteCond %{QUERY_STRING} ^_route_=tovar-old$

RewriteRule ^(.*)$ http://site/kategori...ria/tovar.html? [R=301,L]

редирект работает, но такая схема трудоемка (много ручной работы)

Что посоветуете господа?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Тогда как правильно написать правило для перенаправления на главную, если старые страницы были сайт/бренд_модель-товара, например так: site/nokia_Asha300 ?

Share this post


Link to post
Share on other sites

Мужики! помогите перенаправить старые страницы, примерно такого вида http://site.com/nokia_Asha300 на http://site.com/

перепробовал многие правила - не получается...

Share this post


Link to post
Share on other sites

Может проще Ваши усилия перекинуть на раскрутку нового магазина? А на старом - с любой страницы перенаправление на новый сайт.

Share this post


Link to post
Share on other sites

Правильно говорите, но проблема как сделать

... с любой страницы перенаправление на новый сайт.

при том, что должно быть так: http://site.com/nokia_Asha300'>http://site.com/nokia_Asha300 на http://site.com/

Все старые страницы имеют одинаковый признак - начинаются с названия бренда и нижнее подчеркивание, а далее текст. Так вот, как отловить эти страницы и перенаправить их?

Share this post


Link to post
Share on other sites

Valdos, гугл в помощь

Аналогичный синтаксис для переадресации сайта:

RedirectPermanent / http://www.you.com/

Пример переадресации каталога:

RedirectPermanent /old-directory http://www.domain.com/new-directory/

Например, зашедших в test переадресуем на www.test.com, остальных на enter.test.com (порядок следования записей важен):

Redirect permanent /test http://www.test.com/

Redirect permanent / http://enter.test.com/

Пропишите чпу для каждой категории верхнего уровня и перенаправляйте их на нужную категорию (у которой тоже вбито своё чпу) на новом сайте. Либо просто все страницы старого сайта на главную страницу нового сайта или на страницу с объяснениями (типа, мы переехали на новый сайт и дальше бла-бла-бла...Покупайте на новом сайте )

  • +1 1

Share this post


Link to post
Share on other sites

Что посоветуете господа?

если есть таблица соответствий tovar-old -> tovar то проблем я не вижу

Share this post


Link to post
Share on other sites

JohnnyVega

Спасибо за советы, но они по большому не относятся к моей ситуации. Переадресовать каталоги - это да, не проблема.

Но отловить проиндексированые старые страницы товаров формата httр://site.com/nokia_Asha300 и перенаправить их - это оказалось проблема.

freelancer

Есть такая таблица соответствий tovar-old -> tovar

Но построчно перенаправить все страницы товаров средствами .htaccess не получилось - уперся в ограничение настроек апача. С 8000 только 2000 смог прописать, далее ограничения и ошибка 500

Share this post


Link to post
Share on other sites

если есть таблица соответствий tovar-old -> tovar то проблем я не вижу

какими средствами?

Share this post


Link to post
Share on other sites

какими средствами?

if (isset($this->request->get['_route_']) && isset($links[$this->request->get['_route_']])){
$this->response->redirect('http://newsite' . $links[$this->request->get['_route_']]);
}
  • +1 1

Share this post


Link to post
Share on other sites

Благодарен за скрипт, но не совсем понятно что делать с ним. Вставка в индексную страницу дает ошибку Fatal error: Using $this when not in object context in /путь/index.php

Share this post


Link to post
Share on other sites

Благодарен за скрипт, но не совсем понятно что делать с ним. Вставка в индексную страницу дает ошибку Fatal error: Using $this when not in object context in /путь/index.php

=)

это не пример рабочего кода. вы лучше скажите как пробовали и что получилось..

Share this post


Link to post
Share on other sites

1. Пробовал средствами апача

Redirect 301 /nokia_Asha300 http://site/kat/telefon-nokia-Asha-300.html
но в конец урла подставляется ?_route_=nokia_Asha300 и в результате "страница не найдена"

2. Получилось перенаправить каждый товар нижеописаным кодом, но не более 25% всех товаров - далее ошибка.

RewriteCond %{QUERY_STRING} ^_route_=nokia_Asha300$
RewriteRule ^(.*)$ http://site/kat/telefon-nokia-Asha-300.html? [R=301,L]

3. Пробовал закрыть вышеуказаную схему общим редиректом для оставшихся страниц на главную, но не смог найти/написать работающее правило.

Share this post


Link to post
Share on other sites

на старом сайте вам нужна своя реализация seo модуля как seo pro например. там по _route_ делать редирект. пример я привел выше

Share this post


Link to post
Share on other sites

на старом сайте вам нужна своя реализация seo модуля как seo pro например. там по _route_ делать редирект. пример я привел выше

сайт остается тот же, просто сделали ап с 1.4 на 1.5 и поменялся синтаксис написания урл

Share this post


Link to post
Share on other sites

сайт остается тот же, просто сделали ап с 1.4 на 1.5 и поменялся синтаксис написания урл

хотя работает.. если прописать в сео модуле

$links - таблица соответствий

$links = array('test1'=>'test2');
        if (isset($this->request->get['_route_']) && isset($links[$this->request->get['_route_']])){
            $this->response->redirect($this->config->get('config_url') . $links[$this->request->get['_route_']]);
        }

  • +1 1

Share this post


Link to post
Share on other sites

Ну у меня не такие обширные знание движка, можно поподробней?

1. Как создать $links - таблицу соответствий , есть у меня обычная таблица соответствия старых и новых урл, в каком виде и куда надо это все запихнуть? мне так кажется что отдельным файлом и потом куда то подключить его...

2. Куда именно вставить вами указаный код?

Share this post


Link to post
Share on other sites

Ну у меня не такие обширные знание движка, можно поподробней?

1. Как создать $links - таблицу соответствий , есть у меня обычная таблица соответствия старых и новых урл, в каком виде и куда надо это все запихнуть? мне так кажется что отдельным файлом и потом куда то подключить его...

2. Куда именно вставить вами указаный код?

я ж написал пример

$links = array('test1'=>'test2', 'link_old' => 'link_new', ...);
код добавить после

public function index() {
  • +1 1

Share this post


Link to post
Share on other sites

))) работает. спасибо большое!!! только как еще в этой конструкции указать 301 редирект?

$links = array('link_old' => 'link_new', 'link_old' => 'link_new', ...);
		if (isset($this->request->get['_route_']) && isset($links[$this->request->get['_route_']])){
		$this->response->redirect($this->config->get('config_url') . $links[$this->request->get['_route_']]);
		}

Share this post


Link to post
Share on other sites

freelancer, возможно ли в этой конструкции указать 301 редирект? поскольку отдает 302 а в действительности нужно 301.

$links = array('link_old' => 'link_new', 'link_old' => 'link_new', ...);
		if (isset($this->request->get['_route_']) && isset($links[$this->request->get['_route_']])){
		$this->response->redirect($this->config->get('config_url') . $links[$this->request->get['_route_']]);
		}

Share this post


Link to post
Share on other sites

header( "HTTP/1.1 301 Moved Permanently" );

header( "Location: ". $this->config->get('config_url') . $links[$this->request->get['_route_']]);

exit;

Share this post


Link to post
Share on other sites

Спасибо за совет.

но показывает ошибку в строке

header( "Location: ". $this->config->get('config_url') . $links[$this->request->get['_route_']]);

пробовал еще так

header( "Location: $this->config->get('config_url') . $links[$this->request->get['_route_']]");

все равно ошибка

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  

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