好吧,所以我运行了一些虚拟主机的Apache 2,其中两个在同一个域上运行。 现在我的问题是,其中之一是假设运行在一个子域(dev.domain.com)和其他一切,但我不能得到这个工作。
我有两个站点可用的文件(dev.domain.com和domain.com),两个站点都启用了符号链接。
这是我在文件里面
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>
domain.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>
那么有人知道我的configuration有什么问题吗? 我会高度赞赏的帮助,我一直在尝试这个永远没有成功。
注意:我的实际域以hu开始,所以我通过dev.h ….会在h ….文件之前加载。
ServerAlias *.domain.com *.domain.info表示定义将用于domain.com中的所有主机,包括dev.domain.com定义。
你真的需要一个通配符吗? 请注意,除非您在DNS条目中使用通配符,否则没有意义,您应该为实际存在的DNS条目创build别名。
如果您确实需要使用通配符,则需要删除dev.domain.com虚拟主机,而是使用domain.com虚拟主机中的重写规则将http://dev.domain.com映射到例如http://www.domain.com/dev