2

我在 mydomain.com/wiki/ 文件夹中安装了 mediawiki,我还在根目录中安装了 phpbb,例如 mydomain.com。我的 phpbb 安装中已经有用户个人资料页面,这些页面的网址如下:mydomain.com/memberlist.php?mode=viewprofile&un=XYZ

我想做的是,我不想使用 Mediawiki 的用户页面和用户讨论页面。相反,我想将所有用户页面重定向到根目录中的 phpbb 用户配置文件页面。我尝试使用 htaccess 方法进行重定向,但无法使其正常工作。我在根文件夹中的 htaccess 具有以下重写规则:

redirect 301 wiki/index.php/User:* http://www.mydomain.com/memberlist.php?mode=viewprofile&un=*

我需要这些帮助:

1)有人可以看看上面的代码,让我知道我是否有问题或无法完成?

2) 我在“用户:”旁边有 *,因为我想将所有现有的 Mediawiki 用户页面转移到 phpbb 的 memberlist.php 页面。那是对的吗?

3) 我还注意到在 Mediawiki 中,用户页面有不同类型的 URL。例如,有时像:wiki/index.php/User:XYZ (or) wiki/index.php?title=User:XYZ (or) wiki/index.php?title=User:XYZ&action=edit&redlink=1 等...那么在这种情况下,我是否需要为每种类型的 url 添加不同的 htaccess 重定向规则?

4) 是否有另一种方法,例如在 LocalSettings.php 中添加重定向规则或其他方法?

5)这样做的正确方法是什么?

我难住了!

4

2 回答 2

0

有人可以看看上面的代码,让我知道我是否有问题或无法做到这一点?

是的,你的Redirect指令是错误的。它不是正则表达式,因此您不能在其中包含类似*的内容,除非您实际上是在尝试匹配“*”。

您可能无法从根目录中的 htaccess 文件进行重定向,因为 Mediawiki 使用自己的 htaccess。因此,在文件/wiki/夹中的 htaccess 文件中,尝试将其添加到已经存在的任何重写规则之上:

RewriteCond %{QUERY_STRING} ^title=User:([^&]+) [NC]
RewriteRule ^ /memberlist.php?mode=viewprofile&un=%1 [L,R=301]

这应该处理如下所示的 URL:/index.php?title=User:XYZ

RewriteRule User:(.*)$ /memberlist.php?mode=viewprofile&un=$1 [L,R=301]

这应该会处理如下所示的 URL:/User:XYZ

是否有另一种方法,例如在 LocalSettings.php 中添加重定向规则或其他方法?

我不知道您可以在 中设置什么LocalSettings.php来进行这种重定向,但是如果有一些针对此问题的 Mediawiki 特定解决方案,我真的不会感到惊讶,也许是一些自动重定向页面的附加代码某个命名空间。

于 2013-09-11T20:12:20.303 回答
0

我认为最好在 MediaWiki 中重定向这些 URL,而不是在您的网络服务器中。更好的是,让我们将目标 URL 设置为规范,以便每个人都知道他们最好首先查看的位置。

与无重定向主页类似,使用GetLocalURL挂钩在其中运行您的代码LocalSettings.php。类似于以下内容。

$wgHooks['GetLocalURL'][] = function ( &$title, &$url, $query ) {
    $ns = $title->getNamespace();
    // Check for user namespaces but ignore subpages.
    if ( !$title->isSubpage() && ( $ns === 2 || $ns === 3 ) ) {
        $url = 'http://www.example.org/memberlist.php?mode=viewprofile&un=' . $title->getText();
    }
};
于 2015-11-01T09:07:04.340 回答