我为我们设置了 2 个新系统,一个 Nagios 和一个 MediaWiki 安装,两个都位于不同的虚拟系统上。
Apache 上的 nagios 系统使用 ScriptAlias 指令工作,可在以下位置使用
nagios.ourdomain.com/nagios3
我尝试设置从nagios.ourdomain.com
到 的重定向nagios.ourdomain.com/nagios3
。我发现*:80
虚拟主机的 sites-available 条目中的重定向会无休止地重定向。在文档中,我发现Redirect
指令优先于ScriptAlias
指令。我通过允许覆盖标准 www 服务目录 ( var/www
) 解决了这个问题,然后将 放入.htaccess
其中
Redirect 301 / /nagios3
这非常有效。
现在,使用 wiki 系统,我想执行类似的从wiki.ourdomain.com
到 的重定向wiki.ourdomain.com/wiki
,尽管 wiki 已经可以直接调用 url。mediawiki安装由指向 mediawiki 目录的符号链接/wiki
直接从标准 wwwroot 提供。/var/www
/var/www/wiki
现在,和以前一样,我更改了*:80
vhost 指令,添加了
<Directory /var/www>
AllowOverride FileInfo
</Directory>
并将 .htaccess 与
Redirect 301 / /wiki
变成var/www
。但是,wiki.ourdomain.com
现在调用会无休止地重定向,并始终添加/wiki
到 URL。
对于 nagios,我理解这是指令优先级的问题。但是,由于 mediawiki 目录直接链接到服务器的 wwwroot,/var/www
如果第一个重定向已经重定向到子目录(尽管是符号链接的子目录),我不明白如何多次使用 .htaccess。
这是符号链接的问题吗?我的配置是不是哪里出了问题?我会接受以不同方式进行重定向的解决方案,尽管我对问题本身很感兴趣。
答案1
我猜测发生的情况是 Apache 无法读取符号链接目录(/var/lib/mediawiki
),并且当它尝试定位错误页面时,它会被您的重定向捕获。
当您使用符号链接指向 apache 目录树中尚未存在的目录时,您需要为目标目录添加指令。符号链接的意思是“嘿,看看那边的地方” - 因此您需要允许 apache 实际执行此操作才能提供内容。
但是,如果它是我的服务器,我只需从一开始就更改 vhost 配置以指向正确的目录,如下所示:
<VirtualHost *:80>
ServerName wiki.example.com
DocumentRoot /var/lib/mediawiki
</VirtualHost>
从与 Apache 实际安装位置不同的目录提供内容是很正常的;使用重定向和符号链接只会使问题复杂化。