【发布时间】:2013-04-30 18:48:47
【问题描述】:
我正在使用一个 LAMP 服务器,该服务器在 Apache 中将多个站点配置为子域。作为标准,每个站点/子域都位于 /var/www/ 内的一个整洁目录中。我已经告诉 Apache 每个站点位于 /etc/apache2/sites-available/ 配置文件中的哪个位置,使用多个 VirtualHost 并为每个站点指定 DocumentRoot 和 ServerName。
当我在页面上编写javascript时,我可以根据站点根目录引用其他页面,如下所示:
include '/includes/something.js';
但我不能在 PHP 中做同样的事情。如果我想在 PHP 代码中包含一个文件,我需要输入:
include '/var/www/site_name/includes/something.php';
(我仍然可以做相对引用,例如 ../includes/something.php,但这不是重点。)我对为什么需要 /var/www/ 感到困惑,但到目前为止只是一个烦恼。一旦我发现需要完整的目录,我就可以围绕它进行编码。但是现在我正在尝试安装 PHPlist,每次保存设置时,我都会被重定向到像 https://phplist.mydomain.org/var/www/phplist/admin/?page=configure 这样的 URL - 这当然会给我一个“找不到页面”错误。
我的 Apache / PHP 设置如何处理站点根目录似乎有些混乱。我还没有深入研究 PHPlist 代码,也不是特别想。但我假设如果我可以修复我的设置,以便我可以在 PHP 中包含文件而不需要 /var/www/ 前缀,那么 PHPlist 也将停止给我过度前缀的 URL。
作为参考,这是我的大多数 Apache 虚拟主机的外观。我想我的具体问题是:1)你有没有看到我告诉你的东西,需要更正? 2) 你会在哪里看,或者你接下来会尝试什么来找出这个奇怪的地方?
<VirtualHost 95.102.96.250:443>
ServerName phplist.mydomain.org
DocumentRoot /var/www/phplist
ServerAdmin admin@mydomain.org
<Directory /var/www/phplist/>
Options +FollowSymLinks
AllowOverride All
order allow,deny
allow from all
</Directory>
</VirtualHost>
希望这只是我的一个基本误解。我已经尝试过 RingTFM,但无法弄清楚这里发生了什么。提前致谢!
【问题讨论】: