如何使用 Apache 为同一站点提供具有不同主机名的两个版本

如何使用 Apache 为同一站点提供具有不同主机名的两个版本

我希望为我的用户提供测试新功能的测试版访问权限。我使用 Symfony 框架运行我的网站。

目前我有以下工作配置:

mysite.com:

<VirtualHost *:80>
DocumentRoot /var/www/html/mysite/current/web
ServerName mysite.com
ServerAlias www.mysite.com
<Directory "/var/www/html/mysite/current/web">
    AllowOverride None
    Order Allow,Deny
    Allow from All      

    <IfModule mod_rewrite.c>
        Options -MultiViews
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ app.php [QSA,L]
    </IfModule>
</Directory>
</VirtualHost>

我尝试使用以下配置来提供我的网站的测试版本:

<VirtualHost *:80>
DocumentRoot /var/www/html/mysite_beta/current/web
ServerName beta.mysite.com
<Directory /var/www/html/mysite_beta/current/web>
AllowOverride None
    Require all granted
    Allow from All

    <IfModule mod_rewrite.c>
        Options -MultiViews
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ app.php [QSA,L]
    </IfModule>
</Directory>
</VirtualHost>

这不起作用,Apache 仅提供第二个配置中的内容,但包含的 css 和 js 文件等资源出现 404 错误。

我不太熟悉如何配置 Apache 以使其按我预期的方式工作。

如何让我网站的 2 个不同代码库在同一个 Apache 服务器上运行?

答案1

验证 DNS 是否正确解析 mysite.com 和 beta.mysite.com。如果 Apache 没有收到标头中的 HOST 值,它将使用第一个加载的站点。

Apache 按字母顺序加载网站。

答案2

配置很好,但我看不到

 NameVirtualhost *:80

指令。尽量将其放在主配置文件中

相关内容