基于Apache名称的虚拟主机

我想在Ubuntu 10.04的Apache安装程序中有多个虚拟主机。 我设法设置一个域名和子域名,jivity.net和sonata.jivity.net使用基于名称的虚拟主机在Apache2,它的工作原理。 但是当我尝试像sonata-software.jivity.net这样的东西,它将我redirect到sonata.jivity.net。 它像sonata-software.jivity.net中的连字符不被apache读取。 这里是我的虚拟conf文件sonata-software.jivity.net:

<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName sonata-software.jivity.net ServerAlias www.sonata-software.jivity.net SetEnv MAGE_RUN_CODE "sonata" SetEnv MAGE_RUN_TYPE "website" DocumentRoot /var/www/websites/jivity/sonata <Directory /> Options FollowSymLinks AllowOverride all </Directory> <Directory /var/www/websites/jivity/sonata> 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 /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 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> 

sonata.jivity.net vconf文件在/ etc / apache2 / sites-available /

 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName sonata.jivity.net ServerAlias www.sonata.jivity.net SetEnv MAGE_RUN_CODE "sonata" SetEnv MAGE_RUN_TYPE "website" DocumentRoot /var/www/websites/jivity/sonata <Directory /> Options FollowSymLinks AllowOverride all </Directory> <Directory /var/www/websites/jivity/sonata> 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 /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 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> 

我想用sonata-software.jivity.net取代sonata.jivity.net我把这个放在/ etc / apache2 / sites-available文件夹后启用了这个网站,然后重新启动了apache。 我如何解决这个问题,以便我可以让sonata-software.jivity.net也工作? 谢谢。

好,第二次尝试…

我会在这里大胆猜测,想知道你是否有正确的文件根目录sonata-software.jivity.net。

也许你忘了编辑DocRoot目录,当你从现有的sonata.jivity.net conf复制和编辑configuration。

这是从你的configuration正确的?

 DocumentRoot /var/www/websites/jivity/sonata 

或者应该是更像这样的东西:

 DocumentRoot /var/www/websites/jivity/sonata-software 

当然,对于<Directory / var / www / websites / jivity / sonata>也是如此。

[后来]

更多关于ServerName和ServerAlias …

如果您希望多个域名指向相同的内容,只需创build一个虚拟主机并根据需要添加尽可能多的ServerAliases即可。 例如

 ServerName sonata-software.jivity.net ServerAlias www.sonata-software.jivity.net ServerAlias sonata.jivity.net ServerAlias www.sonata.jivity.net 

ServerName是网站的“规范名称”。 configuration站点是很常见的(但不是必须的),这样任何一个别名请求都会自动redirect到官方URL。

你可能在你的apacheconfiguration(/ etc / apache2下)或者DocRoot的.htaccess文件中有这样的redirect。

你有没有将它链接到/ etc / apache2 / sites-enabled /目录?

尝试:

 sudo a2ensite sonata-software.jivity.net 

如果你尝试删除连字符,只是做sonatasoftware.jivity.net。 确保您的网站可用和网站启用也被修改。 如果它的工作,那么也许它只是连字符,是以某种方式影响阿帕奇服务页面的方式。

尝试禁用sonata-software.jivity.net和sonata.jivity.net

 a2dissite sonata.jivity.net a2dissite sonata-software.jivity.net 

然后重新启动apache2,然后重新启用sonata-software.jivity.net

 a2ensite sonata-software.jivity.net 

看看它是否能解决你的问题。

你configuration好你的DNS吗?

检查你的访问日志,你应该阅读发生了什么事情。

将sonata-software重命名为完全不同的东西,重新configurationDNS并重新启动Apache(这可能需要一些时间才能刷新caching)。