【问题标题】:Redirecting Mediawiki User Page and User Talk page to external url将 Mediawiki 用户页面和用户对话页面重定向到外部 url
【发布时间】:2013-09-11 19:50:19
【问题描述】:

我在 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) 这样做的正确方法是什么?

我被难住了!

【问题讨论】:

    标签: .htaccess redirect mediawiki phpbb url-redirection


    【解决方案1】:

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

    是的,您的 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 特定解决方案,也许是一些附加代码,我真的不会感到惊讶自动重定向特定命名空间中的页面。

    【讨论】:

    • 谢谢乔恩...抱歉,这对您来说可能是一个基本问题...由于 wiki 文件夹中没有默认的 htaccess 文件,我是否只需创建一个空的 htaccess 文件并将上面的重定向在里面?我是否需要向其中添加任何其他内容才能使重定向起作用?有没有我可以为 wiki 下载的示例 htaccess 文件?对不起,我很无知..
    • @blackops_programmer 如果Mediawiki文件夹中没有htaccess文件,文档根目录的htaccess文件中是否有Mediawiki规则?还是您所有的 wiki 页面都像:/wiki/index.php?title=MainPage?您想在有 mediawiki 规则的地方添加这些规则,但在同一个文件中它们之前。
    • 啊明白了.. Atm 我真的没有根 htaccess 文件中的 mw 规则。再说一次,我只是在我的本地主机中进行测试,但是一旦我本周末在我的实时站点上安装它就会有所不同。另外我想我可能需要创建一个 htaccess 文件,因为我还计划添加短 url 方法。无论如何,现在,我在线使用 htaccess 生成器工具为我的 localhost wiki 文件夹创建了一个简单的 htaccess 文件,然后添加了您给定的重写规则,它运行良好。太感谢了!!这正是我想要实现的目标,您的支持也很到位!:)
    • 嗨,乔恩,我昨晚刚刚在我的实时站点上安装了我的 wiki,我一直在尝试让这个重写规则起作用。我将 wiki 安装在 /w/ 文件夹中并使用短 URL 方法,按照此处给出的说明将主 URL 重定向到 /wiki/Page_Title:mediawiki.org/wiki/Manual:Short_URL/Apache 当我在 /w 内的 htaccess 中添加上述重写规则时/ 文件夹,它会使用 ?title= 重定向 url,但不会使用 User:xyz 重定向 url,因为这些 url 在 root htaccess 中被重写为 wiki/User:xyz。请在实施短网址时如何使其工作?
    • @blackops_programmer 从重写标志中删除,R=301
    【解决方案2】:

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

    redirectless main page 类似,使用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();
        }
    };
    

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 2022-01-23
      • 2019-12-14
      • 2018-06-15
      相关资源
      最近更新 更多