我正在尝试在 Ubuntu 10.04 中的 apache 设置中拥有多个虚拟主机。我设法使用 apache2 中基于名称的虚拟主机设置了一个域和一个子域,jivity.net 和 sonata.jivity.net,并且它按预期工作。但是当我尝试像 sonata-software.jivity.net 这样的操作时,它会将我重定向到 sonata.jivity.net 。这就像 apache 无法读取 sonata-software.jivity.net 中的连字符一样。这是我的 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>
/etc/apache2/sites-available/ 中的 sonata.jivity.net vconf 文件
<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 也能正常工作?谢谢。
答案1
好的,第二次尝试……
我将在这里进行大胆猜测,想知道您是否拥有 sonata-software.jivity.net 的正确文档根目录。
当您从现有的 sonata.jivity.net conf 复制并编辑配置时,您可能忘记编辑 DocRoot 目录。
你的配置中的这一行正确吗?
DocumentRoot /var/www/websites/jivity/sonata
或者应该是这样的:
DocumentRoot /var/www/websites/jivity/sonata-software
当然,对于 <Directory/var/www/websites/jivity/sonata> 来说也是一样的。
[之后]
有关 ServerName 和 ServerAlias 的更多信息...
如果您希望多个域名指向同一内容,只需创建一个虚拟主机并添加任意数量的 ServerAliases。例如
ServerName sonata-software.jivity.net
ServerAlias www.sonata-software.jivity.net
ServerAlias sonata.jivity.net
ServerAlias www.sonata.jivity.net
ServerName 是站点的“规范名称”。通常(但不是必需的)会将站点配置为使对某个别名的任何请求自动重定向到官方 URL。
您可能在 apache 配置的其他地方(在 /etc/apache2 下搜索)或者 DocRoot 中的 .htaccess 文件中有类似的重定向。
答案2
您是否已将其符号链接到 /etc/apache2/sites-enabled/ 目录?
尝试:
sudo a2ensite sonata-software.jivity.net
答案3
如果您尝试删除连字符并只执行 sonatasoftware.jivity.net,情况会怎样?确保您的 sites-available 和 sites-enable 也被修改了。如果它有效,那么也许只是连字符以某种方式影响了 apache 提供页面的方式。
尝试禁用 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
看看它是否能解决你的问题。
答案4
您是否正确配置了您的 DNS?
检查您的访问日志,您应该了解发生了什么。
将 sonata-software 重命名为完全不同的名字,重新配置 DNS 并重新启动 Apache(这可能需要一些时间来刷新缓存)。