将joomla url重定向到wordpress

时间:2008-12-03 15:33:29

标签: wordpress .htaccess mod-rewrite joomla

我将基于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错误,但大多数情况下重定向不起作用。

那么,你们中的任何一个人都有同样的问题吗?我没有必要拥有好的固定链接,但如果可以的话,那会更好。问题是我有许多反向链接到旧网址,我不想放弃它们。

非常感谢你们!

4 个答案:

答案 0 :(得分:1)

由于您的网站转换为Wordpress相对较新,有什么阻止您使用旧的Joomla! WP数据库表中的ID?这样可以很容易地使用正则表达式。

另一种选择是创建一个处理Joomla的独立PHP脚本!然后,URL会重定向到Wordpress。所以你的Apache配置中有一个正则表达式,检测index.php?option = com_content& task = view URL,找到'id'的值,然后重定向到someotherscript.php,它会有一张来自Joomla的id的地图!到Wordpress。然后,此脚本将使用标题('Location:?p ='。$ id)重定向到Wordpress中的正确页面。

答案 1 :(得分:1)

感谢您的想法!我把它放在index.php(wordpress默认):

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

答案 2 :(得分:0)

另一种选择可能是使用重定向插件为您执行此操作。每次更改或更新主题时都会保存解决方案。

答案 3 :(得分:0)

我和Joomla有一个非常类似的问题。 如果你想在Apache中使用.htaccess做一些方法,但是如果旧URL和新URL之间没有绝对关系,那么你必须为每个URL对写两行。

df -i

我不确定你是否真的有这种新网址。就个人而言,SEF网址会更好,例如: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

如果你想这样做,你可以这样做,但你必须添加一个?在目的地的末尾,否则旧的查询字符串将添加到您的新目的地,如下所示:https://example.com/path/to/new/page 所以对于这个例子,请按如下方式进行:

https://example.com/path/to/new/page?option=com_content&task=view&id=49&Itemid=29