基于 Apache 名称的虚拟主机

基于 Apache 名称的虚拟主机

我正在尝试在 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(这可能需要一些时间来刷新缓存)。

相关内容