希望通过从每台计算机的单个apache /网站迁移到每台计算机的多个虚拟主机设置获得一些指导。
当前设置:从源代码安装软件包的LAMP堆栈: Apache 2.4.2,php 5.4.3和mysql 5.1.63 对于当前的单站点(site1.ie)设置,我有虚拟主机详细信息,DocumentRoot和Directory指令指向httpd.conf中当前站点的site1 documentroot。
要启用虚拟主机,我已取消注释Include conf / extra / httpd-vhosts.conf,我已将virtualhost站点配置详细信息移至httpd-vhosts.conf。像这样:
<VirtualHost _default_:443>
ServerName http://site1.ie
DocumentRoot "/usr/local/apache2/htdocs/site1"
ServerAlias site1.ie
</VirtualHost>
当我取消注释httpd.conf文件中的DocumentRoot详细信息并重新启动httpd时,当我尝试加载site1.ie时出现403 forbidden错误。
httpd-vhosts.conf中的目录指令(从httpd.conf移动):
<Directory "/usr/local/apache2/htdocs/site1">
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Require all granted
</Directory>
编辑:
httpd中的error_log发出此错误:AH01630:服务器配置拒绝客户端:/ usr / local / apache2 / htdocs /
这是由此Directory指令控制的网站数据的位置:
<Directory />
AllowOverride none
Require all denied
</Directory>
据我所知,这是默认拒绝访问此文件夹但允许通过自己的目录指令访问其子文件夹?
出现403问题的时刻是我在主httpd.conf文件中注释掉DocumentRoot并在virtualhost指令中定义DocumentRoot(在httpd.conf文件或httpd-vhosts.conf文件中) 。
我暂时将目录/指令(如上所示)更改为要求所有已授予,这消除了403错误,但我所有的是默认的apache'It works'页面。我仍然无法访问site1的已定义documentroot目录。
有人会对我做错了什么有任何指示吗?
答案 0 :(得分:0)
我想你会在this site上找到答案。
这是可能导致您出现问题的清单。
答案 1 :(得分:0)
我相信您的标签必须位于标签内的vhosts文件中才能正常工作,因为您已在httpd.conf文件中启用了虚拟主机,例如:
<VirtualHost *:443>
ServerName site1.ie
ServerAlias site1.ie
DocumentRoot "/usr/local/apache2/htdocs/site1"
<Directory "/usr/local/apache2/htdocs/site1">
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Require all granted
</Directory>
</VirtualHost>
还考虑将变量添加到httpd.conf中,以便您可以在一个位置进行调整,例如:
Define INSTALL_DIR d:/wamp64
Define SRVRPATH ${INSTALL_DIR}/usr/local/apache2/htdocs
这将允许您从更改上面的第一个代码块
DocumentRoot "/usr/local/apache2/htdocs/site1"
<Directory "/usr/local/apache2/htdocs/site1">
收件人
DocumentRoot "${SRVRPATH}/site1"
<Directory "${SRVRPATH}/site1">