Apache 将 URL 重定向到另一个虚拟主机

Apache 将 URL 重定向到另一个虚拟主机

我有两个在我的 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>

相关内容