我正在本地系统上测试配置以了解 Apache 配置并使用相同的方法来处理我的生产服务器。
我需要配置两个域example.com
和example.org
我有 php 脚本所在的目录:
/server/example.com for example.com
和
/server/example.org for example.org
我在两个目录上运行了该命令:
sudo chcon -R -h -t httpd_sys_content_t /server/example.*
example.com 中的 index.php 包含
<?
$debug = ($_SERVER['HTTP_HOST'] == 'example.com');
if ($debug) echo "in example.com";
?>
和
example.org 中的 index.php 包含
<?
$debug = ($_SERVER['HTTP_HOST'] == 'example.org');
if ($debug) echo "in example.org";
?>
example.conf
我还创建了一个名为apache conf 文件/etc/httpd/conf.d/example.conf
以下是.conf文件的内容:
<VirtualHost example.com:81>
DocumentRoot /server/example.com
ServerName example.com
<Directory "/server/example.com">
AllowOverride None
Options All
Order allow,deny
Allow from all
DirectoryIndex index.php index.html index.htm
</Directory>
</VirtualHost>
<VirtualHost example.org:82>
DocumentRoot /server/example.org
ServerName example.org
<Directory "/server/example.org">
AllowOverride None
Options All
Order allow,deny
Allow from all
DirectoryIndex index.php index.html index.htm
</Directory>
</VirtualHost>
当我访问example.com
该网站时,它按预期运行。脚本文件/server/example.com
被评估为 true 并显示in example.com
现在,当我访问时example.org
,网站什么都不显示。
另外,这是/etc/host
我修改过的:
127.0.0.1 example.com
127.0.0.1 example.org
有人可以指出我在这里遗漏了什么吗?
答案1
您正在访问example.org:82
,还是只是example.org
?目前,您的站点绑定到不同的端口。这可能不是您想要的;您可能希望使用基于名称的虚拟主机。
您将需要NameVirtualHost
在某处发出指令,并更改您的<VirtualHost>
指令来匹配它。
像这样:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /server/example.com
ServerName example.com
ServerAlias www.example.com
# etc
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /server/example.org
ServerName example.org
ServerAlias www.example.org
# etc
</VirtualHost>