我有两个在我的 VPS 上独立运行的站点,我们将它们称为 site1 和 site2。
它们分别位于 /var/www/html/site1 和 /var/www/html/site2
我还没有域名,但我可以使用服务器 IP 访问我的网站,假设其地址是 8.8.8.8
我目前为每个站点设置了两个单独的 apache 配置文件。
两个站点的配置如下,只有DocumentRoot
第二个Directory
块不同。
<VirtualHost *:80>
ServerName 8.8.8.8
DocumentRoot /var/www/html/site
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/html/site>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我可以通过启用一个网站并禁用另一个网站来访问我的网站。
起初我想有一个独立的子域名http://site2.8.8.8.8/* 但是由于我还没有 DNS 记录,如果不修改每台想要访问网站的计算机上的本地 hosts 文件,我就无法真正实现这一点。
因此,我认为更好的解决方案是让 site1 运行http://8.8.8.8/* 并且 site2 正在运行http://8.8.8.8/site2/*
显然它可以被使用RewriteCond
但我找不到让它工作的方法。
如果没有 DNS 记录,我的目标真的能实现吗?
否则,是否可以通过在另一个端口(例如 8080)上运行 site2 并重定向到该端口来实现?
答案1
我终于找到了解决办法
我刚刚创建了一个受 phpmyadmin 启发的 apache 配置。
- site1 在 apache 站点中定义为虚拟主机
- site2 在 apache 配置中定义为别名
以下是感兴趣的人的最小配置文件
# cat /etc/apache2/site-enabled/site1.conf
<VirtualHost *:80>
ServerName 8.8.8.8
DocumentRoot /var/www/html/site1
</VirtualHost>
# cat /etc/apache2/conf-enabled/site2.conf
Alias /site2 /var/www/html/site2
<Directory /var/www/html/site2>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
AllowOverride All
</Directory>