.htaccess 将Mediawiki用户页和用户对话页重定向到外部url

.htaccess 将Mediawiki用户页和用户对话页重定向到外部url,.htaccess,redirect,mediawiki,phpbb,url-redirection,.htaccess,Redirect,Mediawiki,Phpbb,Url Redirection,我在mydomain.com/wiki/文件夹中安装了mediawiki,在根目录中也安装了phpbb,比如mydomain.com。我在phpbb安装中已经有了用户配置文件页面,这些页面的URL如下:mydomain.com/memberlist.php?mode=viewprofile&un=XYZ 我想做的是,我不想使用Mediawiki的用户页面和用户对话页面。相反,我希望将所有用户页面重定向到根目录中phpbb的用户配置文件页面。我尝试使用htaccess方法重定向,但无法使其工作。根

我在mydomain.com/wiki/文件夹中安装了mediawiki,在根目录中也安装了phpbb,比如mydomain.com。我在phpbb安装中已经有了用户配置文件页面,这些页面的URL如下:mydomain.com/memberlist.php?mode=viewprofile&un=XYZ

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

redirect 301 wiki/index.php/User:* http://www.mydomain.com/memberlist.php?mode=viewprofile&un=*
我需要以下方面的帮助:

1) 有人可以看看上面的代码,让我知道如果我有什么错误或如果这不能做到

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

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

4) 是否有其他方法,如在LocalSettings.php或其他文件中添加重定向规则

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

我被难住了

有人可以看看上面的代码,让我知道如果我有什么错误或如果这不能做到

是的,您的
重定向
指令错误。它不是一个正则表达式,因此你不能在其中包含像
*
这样的东西,除非你真的试图匹配一个“*”

您可能无法从根目录中的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

RewriteRule User:(.*)$ /memberlist.php?mode=viewprofile&un=$1 [L,R=301]
是否有其他方法,如在LocalSettings.php或其他文件中添加重定向规则


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

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

与类似,使用钩子在
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();
    }
};

谢谢你,乔恩。。。对不起,这听起来像是一个基本的问题。。。由于wiki文件夹中没有默认的htaccess文件,我是否只创建一个空的htaccess文件并将上面的重定向放在其中?我是否需要添加其他内容才能使重定向生效?是否有一个示例htaccess文件可以为wiki下载?对不起,我很不明白。@blackops\u程序员如果Mediawiki文件夹中没有htaccess文件,文档根目录的htaccess文件中是否有Mediawiki规则?或者您的所有wiki页面看起来都像:
/wiki/index.php?title=MainPage
?你想在有mediawiki规则的地方添加这些规则,但就在同一个文件中它们的前面。啊,明白了。。Atm我在根htaccess文件中没有mw规则。再说一次,我只是在我的本地主机上进行测试,但一旦我在本周末的实时站点上安装它,情况就不同了。此外,我想我可能需要创建一个htaccess文件,因为我还计划添加短url方法。无论如何,现在,我在线使用htaccess生成器工具为我的localhost wiki文件夹创建了一个简单的htaccess文件,然后添加了您给定的重写规则,效果非常好。非常感谢你!!这正是我想要实现的目标,你的支持恰到好处!:)嗨,乔恩,我昨晚刚在我的直播网站上安装了我的维基,我一直在努力让这个重写规则起作用。我在/w/文件夹中安装了wiki,并使用短URL方法,根据此处给出的说明将主URL重定向到/wiki/Page_Title:当我在/w/文件夹中的htaccess中添加上述重写规则时,它使用?title=重定向url,但不使用User:xyz重定向url,因为这些url在根htaccess to wiki/User:xyz中重写。当实现短url时,我如何才能使其工作?请@blackops\u程序员从重写标志中删除
,R=301