Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Переадресация 8000 ссылок


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

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

Есть 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]

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

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

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


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

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

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


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

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

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


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

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

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

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

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

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

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


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
Ссылка на комментарий
Поделиться на других сайтах

JohnnyVega

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

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

freelancer

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

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

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


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

if (isset($this->request->get['_route_']) && isset($links[$this->request->get['_route_']])){
$this->response->redirect('http://newsite' . $links[$this->request->get['_route_']]);
}
  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

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

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


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

=)

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

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

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. Пробовал закрыть вышеуказаную схему общим редиректом для оставшихся страниц на главную, но не смог найти/написать работающее правило.

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


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

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

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

сайт остается тот же, просто сделали ап с 1.4 на 1.5 и поменялся синтаксис написания урл
Ссылка на комментарий
Поделиться на других сайтах


сайт остается тот же, просто сделали ап с 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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


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

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

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

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

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

public function index() {
  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

))) работает. спасибо большое!!! только как еще в этой конструкции указать 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_']]);
		}
Ссылка на комментарий
Поделиться на других сайтах


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_']]);
		}
Ссылка на комментарий
Поделиться на других сайтах


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

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

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

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

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

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

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.