我有以下虚拟主机(在 apache2.conf 文件中)从 AWS 上的单个目录加载所有子域
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName mydevsite.com
ServerAlias mydevsite.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/apps
ServerName mydevsite.com
ServerAlias *.mydevsite.com
</VirtualHost>
它不起作用并且子域名仍然指向 html 目录
我也尝试在 htaccess 中执行以下操作,但它给出了 500 错误
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.website\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.website\.com$
RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1
RewriteRule ^(.*)$ /%1/$1 [QSA]
我的简单要求是从根目录加载主域,并从应用程序目录加载所有子域
答案1
apache2.conf
两个虚拟主机都一样。ApacheServerName mydevsite.com
需要不同的名称来标识每个虚拟主机。配置可能如下所示:
<VirtualHost *:80>
ServerName mydevsite.com
DocumentRoot "/var/www/html"
</VirtualHost>
<VirtualHost *:80>
ServerName apps.mydevsite.com
ServerAlias *.mydevsite.com
DocumentRoot "/var/www/html/apps"
</VirtualHost>
如有疑问请阅读Apache HTTP 服务器版本 2.4 - 使用基于名称的虚拟主机。
重新启动 Apache 之前测试配置:
$ sudo apache2ctl configtest
如果 configtest 没有错误退出,请重新启动 Apache:
$ sudo systemctl restart apache2.service