设置环境变量时将所有子域名重定向到 www

设置环境变量时将所有子域名重定向到 www

我有一个指向 apache2 网络服务器的域名(example.com)。

根 www 文件夹如下所示:

www/
  site/
  app/
  test/

Apache 配置应该:

  • 将所有请求发送至http://www.example.com/到‘站点’文件夹。
  • 将所有其他子域请求发送到“app”文件夹,同时将子域名称设置为环境变量。

我确信 DNS 设置正确,所有 URL 都解析到我的网络服务器。

这是我在 Apache 配置中获得的内容:

<VirtualHost *:80>
    <Directory />
            Options Indexes FollowSymLinks Includes
            AllowOverride All
            Order deny,allow
            Allow from all
            Require all granted
    </Directory>
    ServerName www.example.be
    ServerAlias www.example.be
    DocumentRoot /var/www/site
    ErrorLog ${APACHE_LOG_DIR}/site/error.log
    CustomLog ${APACHE_LOG_DIR}/site/access.log combined
</VirtualHost>

<VirtualHost *:80>
    <Directory />
            Options Indexes FollowSymLinks Includes
            AllowOverride All
            Order deny,allow
            Allow from all
            Require all granted
    </Directory>
    ServerName example.be
    ServerAlias *.example.be
    VirtualDocumentRoot /var/www/app/production/source
    SetEnv VAR_NAME %1
    ErrorLog ${APACHE_LOG_DIR}/site/error.log
    CustomLog ${APACHE_LOG_DIR}/site/access.log combined
</VirtualHost>

第一个 VirtualHost,对站点文件夹的 www 重写按应有的方式工作。

第二个进行了正确的重写,但我无法将子域放入环境变量中。

有人能帮我完成这最后一步吗?我并不是真正的 Apache 专家...

谢谢!

答案1

你说浏览器无法解析如下 URLhttp://test.example.com那么 test.example.com 是 DNS 中注册的主机名吗?如果不是,那么您的 RewriteRule 将永远没有机会触发,因为客户端将无法找到它。

如果您不确定 test.example.com 是否在 DNS 中注册,请尝试使用任何在线 DNS 查找工具,或从命令行运行host test.example.com(Linux)或nslookup test.example.com(Windows)。

相关内容