无法让子域名与虚拟主机协同工作

无法让子域名与虚拟主机协同工作

好的,我正在运行带有几个虚拟主机的 apache 2,其中两个在同一个域上运行。现在我的问题是,其中一个应该在子域 (dev.domain.com) 上运行,另一个应该在其他所有域上运行,但我无法让它工作。

我在 sites-available 中获得了 2 个文件( dev.domain.com 和 domain.com ),并且两个文件均在 sites-enabled 中启用了符号链接。

这是我在文件中得到的内容

dev.domain.com

<VirtualHost *:80>
 ServerName dev.domain.com
 ServerAlias development.domain.com

 DocumentRoot /home/myusername/public_www/dev.domain.com
 <Directory /home/myusername/public_www/dev.domain.com/>
  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 All
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
 </Directory>

 ErrorLog /var/log/apache2/error.log

 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn

 CustomLog /var/log/apache2/access.log combined
</VirtualHost>

域名.com

<VirtualHost *:80>
 ServerName domain.com
 ServerAlias *.domain.com *.domain.info

    <IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} !^domain\.com$ [NC] 
  RewriteRule ^(.*)$ http://domain.com$1 [R=301,L]
 </IfModule>

 DocumentRoot /home/myusername/public_www/domain.com
 <Directory /home/myusername/public_www/domain.com/>
  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 All
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
 </Directory>

 ErrorLog /var/log/apache2/error.log

 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn

 CustomLog /var/log/apache2/access.log combined
</VirtualHost>

那么有人知道我的配置有什么问题吗?我将非常感激您的帮助,我一直在尝试这个问题,但没有成功。

注意:我的实际域以 hu 开头,因此我认为 dev.h.... 会在 h.... 文件之前加载。

答案1

ServerAlias *.domain.com *.domain.info意味着该定义将用于 domain.com 中的所有主机,并覆盖 dev.domain.com 定义。

您真的需要通配符吗?请注意,除非您在 DNS 条目中也使用通配符,否则这样做毫无意义,您应该只为实际存在的 DNS 条目创建别名。

如果你确实需要使用通配符,则需要删除虚拟主机dev.domain.com,而是使用 domain.com 虚拟主机中的重写规则来映射http://dev.domain.com到例如http://www.domain.com/dev

相关内容