Перенаправить URL-адреса joomla на wordpress
-
22-07-2019 - |
Вопрос
Я перенес бывший сайт, основанный на joomla, на WordPress.Импорт работал нормально, но проблема в том, что старые ссылки больше не работают.Поскольку существует всего 50 или около того статей, я подумал, что будет хорошей идеей установить правило для каждой записи (в .htaccess).
Что ж...Не всегда все происходит так, как вы хотите, поэтому перенаправления вообще не работают : (
Старые ссылки на joomla выглядят примерно так:
http://site.com/index.php?option=com_content&task=view&id=49&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=42&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=68&Itemid=29
И должны быть переведены на:
http://site.com/?p=23
http://site.com/?p=24
http://site.com/?p=25
в принципе, нет связи между старыми и новыми ссылками, поэтому я не думаю, что регулярное выражение поможет
и старый, и новый сайт находятся в одном домене
Хорошо, проблема в том, что из всех правил, которые я пробовал (а я пробовал МНОГО!), ни одно не сработало.в нескольких случаях я получаю ошибку 500, но в большинстве случаев перенаправление не работало.
Итак, у кого-нибудь из вас, ребята, была такая же проблема?Я не обязательно хочу иметь хорошие постоянные ссылки, но если я смогу, это будет лучше.Проблема в том, что у меня много обратных ссылок на старые URL-адреса, и я не хочу их терять.
Большое спасибо, ребята!
Решение
Поскольку перевод вашего сайта на Wordpress относительно новый, есть ли что-нибудь, что мешает вам использовать старую Joomla?Идентификатор есть в вашей таблице базы данных WP?Это позволило бы вам довольно легко использовать регулярное выражение.
Другим вариантом было бы создать отдельный PHP-скрипт, который обрабатывает Joomla!URL-адреса затем перенаправляются на те, что находятся на Wordpress.Таким образом, у вас было бы регулярное выражение в вашей конфигурации Apache, определяющее индекс.php?option=com_content&task= просмотр URL-адресов, поиск значения для 'id', затем перенаправление на someotherscript.php там была бы карта ваших идентификаторов из Joomla!для Wordpress.Затем этот скрипт будет использовать header('Местоположение:?p=' .$id) для перенаправления на нужную страницу в Wordpress.
Другие советы
Спасибо за идею!Я вставил это в index.php (wordpres по умолчанию):
if(isset($_GET['option'])) {
if(is_numeric($_GET['id'])){
header ('HTTP/1.1 301 Moved Permanently');
header("Location: http://www.site.com/?p={$_GET['id']}");
die();
}else {
die('Hacking attempt');
}
}
И работает похоже...ОТЛИЧНО!:D
Другим вариантом могло бы быть использование плагина перенаправления, чтобы сделать это за вас.Сохраняет выход из строя решения при каждом изменении или обновлении вашей темы.
У меня была очень похожая проблема с какой-то неизвестной CMS для Joomla.Если вы хотите сделать это с помощью .htaccess в Apache, есть способ, но если между старым URL и новым URL нет абсолютной связи, вам придется написать две строки для каждой пары URL.
RewriteEngine On
# now the first Example
RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /?p=23 [R=301,L]
# Repeat last two lines for all your URLs
Я не уверен, действительно ли у вас есть такого рода новые URL-адреса.Лично URL-адрес SEF был бы лучше, например: https://example.com/path/to/new/page
Если вы хотите сделать это, чем вы можете это сделать, но вы должны добавить ?в конце пункта назначения в противном случае старая строка запроса была бы добавлена к вашему новому пункту назначения следующим образом: https://example.com/path/to/new/page?option=com_content&task=view&id=49&Itemid=29
итак, для этого примера сделайте это следующим образом:
RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /path/to/new/page? [R=301,L]