2008-12-03 7 views
2

Я переместил ex-site на основе joomla в wordpress. Импорт работал нормально, но проблема в том, что старые ссылки больше не работают. Поскольку есть только 50 или около того статей, я думаю, будет хорошей идеей поставить правило для каждого сообщения (в .htaccess).Redirect joomla url's to wordpress

Ну ... Не всегда вещи, как вы хотите, так переадресовывает не работают вообще :(

Старый 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, и я не хочу их потерять.

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

ответ

1

Поскольку преобразование вашего сайта в 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

местоположения поле заголовок должно быть абсолютной URI. – Gumbo 2009-01-29 13:42:08

+0

Я просто сделал относительное перенаправление, и это сработало. – jlleblanc 2009-01-29 14:21:06

+0

Не очень понравился вариант IMHO, здесь вы создаете 2 Перенаправляет один из оригинала в специальный скрипт (например, someotherscript.php) и формируете там второй перенаправление на новый URL. Это огромная проблема с производительностью и может снизить рейтинг SEO. – Webdesigner 2017-09-25 21:41:57

1

Thnaks за идею! Я поместил это в 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'); 
    } 
} 

И работает как ... GREAT! : D

0

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

0

У меня была очень похожая проблема с неизвестной 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]