当子域的 DocumentRoot 作为重定向 URL 的前缀时,如何防止 HTTP::redirect 破坏我的子域?

当子域的 DocumentRoot 作为重定向 URL 的前缀时,如何防止 HTTP::redirect 破坏我的子域?

我已将 Apache 配置为通过子域加载 KnowledgeTree (KT)。

# Part of http.conf file
NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot /usr/local/apache2/htdocs
</VirtualHost>

<VirtualHost *:80>
    ServerName knowledgetree.example.com
    DocumentRoot /usr/local/apache2/htdocs/knowledgetree
</VirtualHost>

当我进入knowledgetree.example.com浏览器时,我应该看到KT的登录页面。

相反,我最终knowledgetree.example.com/knowledgetree/login.php得到了以下消息:

未找到

该服务器上未找到所请求的 URL /knowledgetree/login.php。

鉴于我最终到达的 URL,错误消息是可以理解的,因为 htdocs/knowledgetree 文件夹中没有其他 knowledgetree 文件夹。

当我转到时example.com/knowledgetree,一切都按预期工作。index.html 文件调用同一文件夹中的 control.php 文件。如果 control.php 文件发现需要登录,它会重定向到 login.php(也在同一文件夹中)。完美。

不幸的是,control.php 不知何故在“login.php”中添加了“knowledgetree/”作为前缀,并在请求 knowledgetree.example.com 时破坏了所有内容。

是否可以配置 Apache 来解决这个问题,或者是否需要更改 KT 的源?

答案1

看起来这需要改变知识树config.ini- 参见这里

在该[KnowledgeTree]部分内,设置:

rootUrl = /

答案2

在 knowledgetree 数据库的 config_settings 表中,将 rootUrl 的值更改为空字符串,然后重新启动 Apache。

更改 config.ini 中的值不会产生任何效果。它仅在安装期间使用。

相关内容