这里是解释如何在 Ubuntu Server 上安装 MediaWiki 的文章。
以下是他们告诉我们如何配置虚拟主机:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www//mediawiki/
ServerName wiki.your-domain.com
<Directory /var/www/html/mediawiki/>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/mediawiki_error
CustomLog /var/log/apache2/mediawiki_access common
</VirtualHost>
我不明白这部分:
<Directory /var/www/html/mediawiki/>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
我的 wiki 的位置/var/www/mediawiki/
如您在指令中看到的一样DocumentRoot
。 中没有mediawiki
文件夹/var/www/html/
。 那里唯一的东西是index.html
文件。 那么,我们为什么需要该部分呢? 我在这里遗漏了什么?
另外,为什么我们要使用//
in DocumentRoot /var/www//mediawiki/
?根据 Apache 官方文档我们这里不需要//
,但如果我运行,apachectl configtest
我就会得到Syntax Ok
并且一切都会正常工作。
答案1
我的 wiki 的位置
/var/www/mediawiki/
如您在指令中看到的一样DocumentRoot
。中
没有mediawiki
文件夹/var/www/html/
。 那里唯一的东西是index.html
文件。
那么,我们为什么需要该部分呢? 我在这里遗漏了什么?
/var/www 实际上不需要它(嗯,它是需要的,但是你的标准 apache2.conf 已经有它了)。
此配置的重点是告诉 Apache允许访问到该特定位置。默认情况下,除非配置另有说明,否则拒绝访问任何文件。在 Apache 2.4 中,这通常使用 来完成Require
,而在 Apache 2.2 中,综合规则(和基于 IP 的规则)是使用 来完成的Allow
。
本节完成的另一件事是使用 AllowOverride 选项启用 .htaccess 文件处理。
您的标准 apache2.conf 已经包含一个 <Directory> 部分,该部分授予每个人对 /var/www 的访问权限(并启用 .htaccess),因此无需在每个虚拟主机上重复该操作。但如果您的 webapp 存储在别的地方(例如 /home 或 /usr/share)那么您将需要一个 <Directory> 部分。
另外,为什么我们使用
//
inDocumentRoot /var/www//mediawiki/
?
因为作者/
在编辑路径时忘记删除多余的部分。正如 <Directory> 部分所示,它最初是“/var/www/html/mediawiki”,但后来他们改变了主意。
在大多数情况下(除了少数例外),路径中的多个连续斜杠与一个斜杠含义相同/
。