Apache2:2 个虚拟主机 1 个服务器名称 2 个服务器路径

Apache2:2 个虚拟主机 1 个服务器名称 2 个服务器路径

我正在安装一个 symfony 项目/var/www/

我在这里存储了一个特殊的登陆页面/var/www/web/landingpage

我希望我的访问者能够http://www.mydomain.com登陆我的登陆页面,并且能够http://www.mydomain.com/foo登陆我的 symfony 项目。

我创建了 2 个不同的虚拟主机ServerPath,登陆页面可以运行,但 symfony 项目却不行。

这是我的配置:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.mydomain.com
    ServerPath /
    DocumentRoot /var/www/web/landingpage
    ErrorLog ${APACHE_LOG_DIR}/mydomain.com.error.log
</VirtualHost>


<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.mydomain.com
    ServerAlias mydomain.com sf.mydomain.com
    ServerPath /sf/

    DocumentRoot /var/www/web

    DirectoryIndex frontend.php

    <Directory /var/www/web>
            Order allow,deny
            Allow from all
            AllowOverride none

            <IfModule mod_rewrite.c>
                    RewriteEngine On

                    # we check if the .html version is here (caching)
                    RewriteRule ^$ index.html [QSA]
                    RewriteRule ^([^.]+)$ $1.html [QSA]
                    RewriteCond %{REQUEST_FILENAME} !-f

                    # no, so we redirect to our front web controller
                    RewriteRule ^(.*)$ frontend.php [QSA,L]
            </IfModule>
    </Directory>

    Alias /sf /var/www/lib/vendor/symfony/data/web/sf

    ErrorLog ${APACHE_LOG_DIR}/mydomain.sf.error.log

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

    CustomLog ${APACHE_LOG_DIR}/mydomain.sf.access.log combined
</VirtualHost>

注意:我的第二个 Virtualhost 没有第一个,也没有ServerPath指令,运行正常

答案1

您不能拥有两个具有相同主机名的虚拟主机条目。这根本行不通。

您可以执行以下操作:

更改第二个虚拟主机为

ServerName sf.domain.com

将第二个虚拟主机中的其他所有内容保留原样。

在您的第一个虚拟主机中,添加以下行:

RewriteEngine On
RewriteRule ^/foo$ http://sf.domain.com [L,R]

然后,当任何人访问 www.mydomain.com/foo 时,他们将被重定向到第二个虚拟主机 sf.domain.com。

相关内容