Вопрос

Я перенес бывший сайт, основанный на 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]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top