我想使用 apache2 VirtualHosts 设置一个主站点和一个用于开发的子域。我的 site.conf 虚拟主机文件如下所示:
<VirtualHost *:80>
ServerName dev.example.com
DocumentRoot /var/www/site/subdomain
<Directory /var/www/site/subdomain >
Options Indexes FollowSymLinks MultiViews
AllowOverride None
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>
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/sub.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/site/main
<Directory /var/www/site/main >
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>
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
问题是每次我访问 dev.example.com 时,我只会得到 example.com。
我尝试了能找到的所有其他解决方案(使用文字 IP、重新排序、使用端口而不是命名主机)……我现在完全陷入困境。有人有什么想法吗?
编辑: 这是我的虚拟主机转储(相关部分):
port 80 namevhost dev.example.com (/etc/apache2/sites-enabled/example.conf:1)
port 80 namevhost www.example.com (/etc/apache2/sites-enabled/example.conf:44)
另外,如果我删除主域名站点,子域名站点根本就无法被检测到。
答案1
确保你的网站启用了
a2ensite dev.mysite.com
完成此操作后,配置文件的符号链接将被放置在 sites-enabled 目录中,如果不存在其他问题,则应该允许访问该站点。
这个问题提供了更多细节。
答案2
WordPress 是问题所在
或者更确切地说,我不知道我必须将 Wordpress 站点 URL 配置为子域,否则它只会重定向到给定的域......
因此解决方案是:打开wp_options
表并编辑 site_url 以包含子域。