设置开发 LAMP 服务器,我希望允许动态子域,又名 ted.servername.com、bob.servername.com。
这是我的 sites-active 文件
<VirtualHost *:80>
# Admin Email, Server Name, Aliases
ServerAdmin [email protected]
ServerName happyslice.net
ServerAlias *.happyslice.net
# Index file and Document Root
DirectoryIndex index.html
DocumentRoot /home/sysadmin/public_html/happyslice.net/public
# Custom Log file locations
LogLevel warn
ErrorLog /home/sysadmin/public_html/happyslice.net/log/error.log
CustomLog /home/sysadmin/public_html/happyslice.net/log/access.log combined
以下是输出sudo apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server happyslice.net (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost happyslice.net (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost happyslice.net (/etc/apache2/sites-enabled/happyslice.net:5)
Syntax OK
服务器主机名是 srv.happyslice.net。
从 apache2ctl 中可以看到,当我使用 happyslice.net 时,我获取了默认虚拟主机,当我使用子域时,我获取了 happyslice.net 主机。因此,后者按我想要的方式运行,但主 URL 却不行。
我在这里尝试了各种各样的变化,但看起来 ServerName 没有被绑定到正确的位置。
有什么想法吗?我被难住了。仅供参考,我正在运行 Apache2.1 和 Ubuntu 10.04 LTS
答案1
我遇到的问题和你几乎一模一样。这是因为默认的 ServerName(在 /etc/apache2/conf.d/servername.conf 中)和我的 VirtualHost 定义文件(/etc/apache2/sites-available/site.com)中的 ServerName 相等。
答案2
对于每个子域名,创建一个与上面列出的文件类似的文件,但只需将子域名作为服务器名称。删除 *.mydomain.com 作为服务器别名。在 apache 中启用配置文件,然后重新启动 apache。
答案3
我相信您要查找的内容需要包含您希望服务器响应的主机名的部分。您目前配置的所有 80 端口流量均被拾取并指向 /home/sysadmin/public_html/happyslice.net/public
尝试添加一个部分和一个具有适当文档根的部分。这样,您可以使用 bill 和 ted 从同一服务器提供不同的内容,同时具有不同服务器的外观和感觉。
答案4
刚刚解决了这个问题,很简单。将您的主机名更改为与虚拟主机名不同的名称。
sudo mcedit /etc/hostname
順利