Как перенести сайт на новый домен с новой структурой url?

Есть старый сайт (что-то вроде блога), на Joomla 1.5 с большим количеством статей (700+) и хорошими позициями в яндексе.

Задача - перенести сайт на wordpress (статьи уже перенесли), с новым доменом и другой структурой URL.

URL отличаются достаточно сильно.

У старого сайта сейчас:
old-site.ru/index.php/%category%/%sub-category%/%id%-nazvanie-posta.html

У нового будет что-то вроде:
new-site.ru/%category%/%year%/%month%/%day%/nazvanie-posta.html

Статьи, которые нахожу, говорят про 301 редирект (в том числе сам яндекс - https://help.yandex.ru/webmaster/yandex-indexing/m... )

Но ведь подобная конструкция в .htaccess
<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://new.name/$1 [R=301,L]

просто отправит на новый домен со старым url (то есть на 404 страницу)

Второй совет от яндекса, добавить в каждую страницу:
<meta http-equiv="refresh" content="0;URL='http://new-site.com/'">

А это 700+ страниц...

Как быть?
  • Вопрос задан
  • 2633 просмотра
Пригласить эксперта
Ответы на вопрос 4
Если название постов уникальное.
1. При пере направлении отправляем название поста, через GET, POST или заголовки.
2. Ищем страницу $query = new WP_Query( 's=keyword' );
3. Если хотя бы один пост нашли, выполняем пере направление на этот пост (нам повезёт), не нашли пере направляем на страницу 404.

Для отделения постов от категорий, можно отправлять дополнительные параметры.
Категории искать через get_cat_ID( $cat_name );
Ответ написан
madmages
@madmages
Человек прямоходящий
1. если у вас все старые урлы лежат в базе и просто идет сопоставление со статьсями то тут сделать редиректы просто: добавить на каждый урл новый урл и туда редирект.
2. если у тебя старые ссылки не лежали в базе а какимто другим образом обрабатывались то очень сожалею... но в этой ситуации тебе нужно знать прос статью те данные которые будут использоваться в новом урлостроении (дата день число час и т.д.) и сделать редиректы со старых урлов на новые

В любом случае толковых редиректов на чистом htaccess не сделать, тут надо писать логику редиректов
Ответ написан
Serhioromano
@Serhioromano
Web Developer
Как один из вариантов сделать небольшой плагин который будет влавливать урлы старые и перенаправлять на новые.

При получении староно урла, можно будет сделать урл не ЧПУ и пропустить его чере роутер и получишь свой урл.

Например

$url = JUri::getInstance()->toString();
if($url ...) {
    $new = 'index.php?option=com_content&Itemid=10&view=article&id='.$id;
    JFactory::getApplication()->redirect(JRoute::_($new, FALSE));
}
Ответ написан
Комментировать
shambler81
@shambler81 Куратор тега htaccess
все просто до неприличия.
https://donatstudios.com/RewriteRule_Generator
и вперед
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы