我当前在标准Apache文件夹(即/ var / www / html)中运行Mediawiki。 现在,我被要求制作Mediawiki多语言,这可以通过创建Wiki场来实现,方法是通过虚拟主机在不同子域上设置技术上各个Wiki,然后通过Mediawiki扩展将它们连接起来。
尽管我只能让它在一定程度上起作用,但我最近尝试过尝试虚拟主机。也就是说,我设置并通过SSH启用了两个VH,但是加载了de.example.com和en.example.com之后,我只得到了两个404。
因此,在崩溃之前,我只是想问一下我的具体问题:
我想将位于/var/www/html/
的Mediawiki的当前安装移至/var/www/html/de/
,并将相同的安装复制到/var/www/html/en/
(以便以后进行编辑,而不必重新安装)再次)。
然后,我希望de.example.com指向/var/www/html/de/
,en.example.com指向/var/www/html/en/
。
此外,example.com
应该链接到de.example.com
。
由于我目前对如何正确实现这一目标感到困惑,因此,我真的很感谢您提供针对此特定问题的快速具体指南(也就是说,从某种意义上说,这使我重回正轨?)。
提前谢谢!
答案 0 :(得分:0)
没有使用MediaWiki配置Wiki服务器场的“一种正确方法”。但是,https://www.mediawiki.org/wiki/Manual:Wiki_family中记录了许多不同的解决方案。
对于小型Wiki农场,类似Manual:Wiki_family中的"Giant switch statement"是一种合理的开始方式。该技术利用了以下事实:MediaWiki在处理每个请求的早期就处理了MediaWiki部署目录的根目录中的LocalSettings.php
文件,并且该文件可以基于 Host:标头或在请求中找到的其他信息。
要使用此方法,您需要执行以下操作:
/var/www/html/
)。原来的问题已经做到了。LocalSettings_en_example_com.php
)LocalSettings_de_example_com.php
等)创建一个自定义LocalSettings.php
文件,以根据每个请求的 Host 标头的内容选择正确的LocalSettings_*.php
:
<?php
// Include common settings to all wikis before this line (eg. database configuration)
switch ( $_SERVER['SERVER_NAME'] ) {
case 'en.example.com':
require_once 'LocalSettings_en_example_com.php';
break;
case 'de.example.com':
require_once 'LocalSettings_de_example.com.php';
break;
default:
header( 'HTTP/1.1 404 Not Found' );
echo 'This wiki is not available. Check configuration.';
exit( 0 );
}
最后,使用与每个虚拟主机的文档根相同的/var/www/html
目录,为您的Web服务器配置多个虚拟主机,每个Wiki一个虚拟主机。