Valdos

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

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

Valdos    0

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

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

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

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

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


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

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

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


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

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

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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


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

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/

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

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


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

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

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

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


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

JohnnyVega

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

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

freelancer

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

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

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


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

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

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

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


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

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

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

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


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

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

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


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

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

=)

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

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


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

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

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


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

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

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


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

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

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

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


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

сайт остается тот же, просто сделали ап с 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_']]);
        }

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


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

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

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

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

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


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

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

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

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

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

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

public function index() {

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


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

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

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


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

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_']]);
		}

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


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

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

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

exit;

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


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

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

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

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 пользователей онлайн

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