我为两个论坛设置了两个 Apache 虚拟主机。访问其中一个时,会链接到根域页面。
这是我的第一个虚拟主机
<VirtualHost *:80>
ServerName krypt.fun
DocumentRoot /var/www/flarum/public
<Directory /var/www/flarum/public>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/flarum_error.log
CustomLog /var/log/apache2/flarum_access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =krypt.fun
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
我的第二个
<VirtualHost *:80>
ServerName scambaiting.krypt.fun
DocumentRoot /var/www/scambaiting/public
<Directory /var/www/scambaiting/public>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/flarum_error.log
CustomLog /var/log/apache2/flarum_access.log combined
</VirtualHost>
但是,scambaiting.krypt.fun 只是导致 krypt.fun 有什么想法吗?
答案1
该问题是由配置文件的名称引起的。使用命名结构来确保“默认”站点 (flarum) 始终位于目录的最后,即可解决该问题。
例如,你可以这样做:
- 更改目录
sites-available
:cd /etc/apache2/sites-available
- 禁用当前启用的站点:
sudo a2dissite flarum-le-ssl.conf sudo a2dissite scambaiting.conf
- 重命名配置文件以使用数字前缀:
sudo mv scambaiting.conf 100-scambaiting.conf sudo mv flarum-le-ssl.conf 999-flarum-le-ssl.conf
- 重新启用站点:
sudo a2ensite flarum-le-ssl.conf sudo a2ensite scambaiting.conf
- 重新加载Apache:
笔记:或者,您可以发出一个sudo service apache2 reload
restart
。
现在,当收到 Web 服务器的流量时,将首先将其与文件进行比较100
,然后再与999
文件进行比较。当您向服务器添加更多站点时,您可以添加(甚至重复使用)这些数字,以确保按特定顺序将站点与启用 Apache 的站点进行比较。
当然,您不需要使用数字前缀,但是,catch-all 配置文件的名称应该始终最后出现在按字母顺序排列的目录列表中。