Apache .htaccess 重定向不断重定向

Apache .htaccess 重定向不断重定向

我为我们设置了 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

现在,和以前一样,我更改了*:80vhost 指令,添加了

<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 实际安装位​​置不同的目录提供内容是很正常的;使用重定向和符号链接只会使问题复杂化。

相关内容