我正在尝试为正在进行的项目创建一个子域名,projectx.cairocubicles.com,此 URL 指向的是托管服务器以外的另一台服务器www.cairocubicles.com。子域名指向的服务器已安装 apache,其虚拟主机如下:
<VirtualHost *:80>
# Admin email, Server Name (domain name) and any aliases
ServerAdmin [email protected]
ServerName www.project1.cairocubicles.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html index.php
DocumentRoot /home/project1/web/public
<Directory /home/project1/web/public>
Options Indexes FollowSymLinks
AllowOverride All
AcceptPathInfo On
Order allow,deny
Allow from all
</Directory>
# Custom log file locations
LogLevel warn
ErrorLog /home/project1/web/log/error.log
CustomLog /home/project1/web/log/access.log combined
</VirtualHost>
但是现在浏览 project1.cairocubicles.com 时,我得到的是另一个网站(虚拟主机列表中的另一个网站)。我也尝试过更改ServerName www.project1.cairocubicles.com
为ServerName project1.cairocubicles.com
,但随后出现了 403 Forbidden 错误。有什么线索吗?
谢谢。
答案1
这只是瞎猜,但这可能是 SELinux 的问题。当您访问已配置为 ServerName 的站点时,站点特定日志中是否显示任何内容?/var/log/http/error.log 中是否显示任何内容?
答案2
-确保在配置发生任何变化后重新启动或重新加载 apache2/httpd
-确保 /home/project1/web/public 存在并且权限为 664(使用 -R 递归执行此操作)
-确保文件的所有者和组是 apache2 / httpd(取决于发行版),一般为用户 ID 33
-确保 project1.cairocubicles.com 指向的 IP 地址正确
-我通常避免将 www. 子域名与现有子域名一起使用(不是因为技术原因,只是看起来很乱)
-为了测试,创建一个名为 phpinfo.php 的文件,并让它只包含以下内容
<?php
phpinfo();
?>
并只加载该内容(因此http://project1.cairocubicles.com/phpinfo.php)
-您需要确保已修改文件夹的所有权和组信息。尝试以下命令(扩展上面的第 3 点):
sudo chown apache2 /home/project1/public -R
和
sudo chgrp apache2 /home/project1/public -R
如果命令提示用户 apache2 不存在,请将其替换为 httpd。如果 apache2 进程(以用户 apache2 启动)无法读取/执行文件,则可能会发生错误(即 403 禁止)。
另一种解决方法是将用户添加到 apache2 组。不过,正确设置起来稍微复杂一些
答案3
尝试:
服务器名称 project1.cairocubicles.com 服务器别名 www.project1.cariocubicles.com
确保运行 apache 的用户具有 /home/project1/web/public 目录的读取权限
答案4
所以当我给 /home/userx 中的主目录一个 o+x 权限时,它现在起作用了,这安全吗,为什么它需要每个人都有执行权限
我需要确保我已经修改了文件夹的所有权和组信息,使用以下命令:chown apache2 /home/project1/public -R 和 chgrp apache2 /home/project1/public -R 如果命令显示用户 apache2 不存在,请将其替换为 httpd。这就是它在主目录(由您的用户拥有)中不起作用而在 /var/www 目录(由 apache2 拥有)中不起作用的原因。我建议在 /var/www/ 中创建一个指向您的主目录的符号链接。这是标准做法。(让其他人更容易看到发生了什么)