我有一个指向 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)。