我还没有找到一个用简单英语描述的、严格的答案来回答这个问题。
相关背景信息:我有一个 Drupal 6 网站。我们使用域模块为 11 个不同的域提供内容。一些域像 www.abc.com、www.def.com,一些像 sesl.mysite.com,似乎是 mysite.com 的子域。这些都有效。其他一些欧洲域在其服务器上指向我们的 mysite.com 域,因此一旦他们的 www.oursite.com 解析为 mysite.com,域访问模块就会解释并说:“在浏览器中保留 www.oursite.com,但从 www.mysite.com 的数据库中提供所有这些内容”。这些都只是信息。这些都没有问题。
我还没有发现的是,如果我添加一个新的子域名,例如 hr.mysite.com,我的 Apache2 服务器上是否有一个简单的文件,我需要在其中输入该新子域名才能使其正常工作....或者...是否还需要“DNS 管理”?我们在这里处理所有事情...这是一家托管我们自己网站的公司,如上所述,我们似乎有一些子域名,但我对我发现的所有信息感到沮丧,这些信息都是与“本地”玩弄的人打交道,而不是针对网络上“实时”服务器的说明。
我不确定我还需要在哪里或做什么才能让这个新的子域名正常工作。我继承了这个网站,是一名前端开发人员,而不是 IT 系统管理员/后端或服务器人员。
在我的 /etc/apache2/sites-available/default 文件中我有以下内容:
VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /data/drupal
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /data/drupal/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
这很令人困惑,因为我没有在任何地方看到我们的实际域名,也没有看到任何看起来像子域名的东西。
有人能给我指明正确的方向吗?
答案1
正如 Tom 所说,你需要两者兼而有之。但 Apache 配置取决于您希望新子域指向的位置。
如果你希望子域名指向你发布 apache 配置的站点,那么你需要添加
ServerAlias newsubdomain.example.com
这样 apache 就知道要使用哪个虚拟主机节。
如果您想将 newsubdomain.example.com 发送到新网站,那么您需要如下操作:
<VirtualHost *:80>
ServerName newsubdomain.example.com
DocumentRoot /some/location/for/your/site
ErrorLog /some/new/error/log/location/newsubdomain.example.com.error.log
</VirtualHost>
请注意,错误日志不是必需的,但我认为将日志分开保存是个好主意。如果您愿意,可以对访问日志进行类似操作。
然后,在您的 DNS 控制面板中,为 newsubdomain.example.com 创建一个指向您服务器的公共 IP 地址的新 A(或主机)记录。您可以从现有域中复制 IP 地址。
这被称为基于名称的虚拟主机 (NameBased VirtualHosts),您可以在此处阅读相关内容:http://httpd.apache.org/docs/current/vhosts/name-based.html