3

我将一个基于 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

4 回答 4

1

由于您的网站到 Wordpress 的转换相对较新,有什么阻止您使用旧的 Joomla!ID 在您的 WP 数据库表中?这将允许您相当轻松地使用正则表达式。

另一种选择是创建一个单独的 PHP 脚本来处理 Joomla!然后 URL 重定向到 Wordpress 的。因此,您将在 Apache 配置中使用正则表达式检测 index.php?option=com_content&task=view URL,找到“id”的值,然后重定向到 someotherscript.php,该文件将包含来自 Joomla 的 id 映射!到WordPress。然后,此脚本将使用 header('Location: ?p=' . $id) 重定向到 Wordpress 中的正确页面。

于 2008-12-03T17:55:12.707 回答
1

感谢这个想法!我把它放在 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

于 2008-12-03T19:37:22.547 回答
0

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

于 2009-01-29T02:15:20.563 回答
0

我对 Joomla 的一些未知 CMS 有一个非常相似的问题。如果您想在 Apache 中使用 .htaccess 进行此操作,则有一种方法,但如果旧 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]
于 2017-09-25T21:36:34.520 回答