Перенаправить Joomla URL в WordPress - PullRequest
2 голосов
/ 03 декабря 2008

Я переместил экс-сайт на основе 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, и я не хочу их терять.

Большое спасибо, ребята!

Ответы [ 4 ]

1 голос
/ 03 декабря 2008

Спасибо за идею! Я положил это в 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

1 голос
/ 03 декабря 2008

Поскольку преобразование вашего сайта в Wordpress является относительно новым, есть ли что-то, что мешает вам использовать старую Joomla! ID в вашей таблице базы данных WP? Это позволит вам довольно легко использовать регулярные выражения.

Другим вариантом будет создание отдельного PHP-скрипта, который обрабатывает Joomla! URL-адреса затем перенаправляются на WordPress. Таким образом, в вашей конфигурации Apache было бы регулярное выражение, определяющее index.php? Option = com_content & task = просмотреть URL, найти значение для 'id', а затем перенаправить на someotherscript.php, который будет иметь карту ваших идентификаторов из Joomla! в Wordpress. Затем этот скрипт будет использовать заголовок ('Location:? P ='. $ Id) для перенаправления на нужную страницу в Wordpress.

0 голосов
/ 26 сентября 2017

У меня была очень похожая проблема с какой-то неизвестной 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. Лично SEF URL будет лучше, например: 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]
0 голосов
/ 29 января 2009

Другой вариант мог бы использовать плагин перенаправления, чтобы сделать это для вас. Сохраняет решение, нарушая каждый раз, когда вы меняете или обновляете свою тему.

...