我有一个正在转发到我的主域的虚拟主机(例如显示与我的主域显示的相同的内容)。
目前我的网站使用主域名:www.example.com
以及各种别名域名:example.com short.com
我正在创建一个新的围墙花园开发网站:dev.example.com
但是我的虚拟主机无法识别该 URL。
我是否必须在我的 DNS 主机或其他地方为 *.example.com 创建通配符记录?
/etc/apache2/sites-enabled/000-default
以下是我的默认虚拟主机设置(当前在)中的相关部分:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.example.com
ServerAlias example.com
ServerAlias shortUrlEx.com
ServerAlias www.shortUrlEx.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^shortUrlEx.com [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.shortUrlEx.com [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [L,R=301]
DocumentRoot /var/www/examplepath
php_value date.timezone "America/New_York"
php_value expose_php "Off"
php_value upload_max_filesize 10M
php_value post_max_size 10M
... other config options
dev.example.com 的配置如下(来自/etc/apache2/sites-enabled/dev.example.com
):
<VirtualHost *>
<Directory />
AuthType Basic
AuthName "Check Site"
AuthUserFile /srv/dev-example/config/.htpasswd
Require valid-user
</Directory>
ServerName dev.example.com
DocumentRoot /srv/dev-example/public_html/
Alias /favicon.ico /srv/dev-example/docs/dev_favicon.ico
php_value date.timezone "America/New_York"
php_value expose_php "Off"
php_value upload_max_filesize 10M
php_value post_max_size 10M
<Directory />
Options FollowSymLinks -Indexes
AllowOverride None
</Directory>
<Directory /srv/dev-example>
Options FollowSymLinks MultiViews -Indexes
AllowOverride All
Order allow,deny
allow from all
</Directory>
... further options that shouldn't be applicable...
我在这里做错了什么?我应该如何配置默认和 dev.example.com 虚拟主机以允许访问 dev 子域,并将主域用于其他所有内容?
答案1
当您尝试 ping “dev.example.com”时会发生什么?它是否解析为 IP 地址?如果是,它是 Apache 服务器的 IP 地址吗?
在这种情况下,我怀疑您需要在 DNS(或至少在 /etc/hosts 中)配置一个新的“dev.example.com”记录,以便您的工作站知道该 DNS 应该去哪里。
答案2
尝试将您的开发站点的 Virtualhost 条目更新为:<VirtualHost *:80>
注意添加:80。
您的虚拟主机定义应该匹配名称虚拟主机设置的值。运行apachectl configtest
通常会报告任何不匹配的情况。
答案3
我不得不:
将虚拟主机设置更改为:
<VirtualHost *:80>
取消注释 NameVirtualHost 设置:
NameVirtualHost *:80
并向 dev.shermanbrothers.com 虚拟主机添加 ServerAlias。
ServerAlias dev.shermanbrothers.com
答案4
不应该吗/etc/apache2/sites-enabled/dev.shermanbrothers.com
?/etc/apache2/sites-enabled/dev.shermanbrothers.com.conf
我认为 Apache 需要 *.conf 文件,至少在 CentOS 中是这样的。或者您手动包含了它?