将 sub.domain.com 重定向到 /var/www/subfolder 并将 sub.domain.com/api 重定向到 /var/www/apifolder

Redirect sub.domain.com to /var/www/subfolder and sub.domain.com/api to /var/www/apifolder

我想将 /api 文件夹从现有的虚拟主机重定向到新的 documentRoot(新虚拟主机)

domain.com -> /var/www/domain
sub.domain.com -> /var/www/sub
sub.domain.com/api -> /var/www/api

而且应该是递归的,所以sub.domain.com/api/v1也应该到/var/www/api。 这甚至可以用 apache 实现吗?

任何减少混淆的建议都将不胜感激;p

正如上面评论中所说,您可以为此简单地定义虚拟主机。您根本不需要任何重定向命令:

Listen 80
<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot /var/www/domain
    <Directory /var/www/domain>
        # ...
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName sub.domain.com

    Alias /api /var/www/api/index.php    
    <Directory /var/www/api>
        # ...
    </Directory>

    DocumentRoot /var/www/sub
    <Directory /var/www/sub>
        # ...
    </Directory>
</VirtualHost>

这显然假设您的 API 是由名为 /var/www/api/index.php 的脚本实现的。您当然可以将该实现保存为您喜欢的任何内容,例如 /var/www/api。然而,这对我来说看起来不太现实,API 通常在脚本基础上实现,脚本通常需要包含文件,因此保存实现的文件夹确实有意义。而且我怀疑您是否想将所有这些文件都放入 /var/www,因此我 假设 /var/www/api 旨在保留实现。

我在本地测试了这个设置,它对我有用。