同一台服务器上的两个不同项目(不同 index.php)

Two different projects (different index.php's) on same server

我正在尝试在同一台服务器上 运行 两个不同的 php 框架。要使用的框架由 uri 中的第一个路径确定。

例如:

http://www.example.com/v1/requestname

将前往 index.php 位于:

/var/www/html/api/api

其他所有内容 (http://www.example.com/v2/requestname) 将转到位于 index.php 的 index.php:

/var/www/html/api2/public

这是我的 apache 2.2 配置:

Alias /v1 /var/www/html/api/api
<Directory /var/www/html/api/api>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
</Directory>

DocumentRoot "/var/www/html/api2/public"
<Directory "/var/www/html/api2/public">
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
</Directory>

我一直在尝试使用 apache 执行此操作,但每个请求都被路由到 api2。我正在寻找的一切似乎都在说这应该有效。

所以这是我为未来的任何人想出的解决方案:

将以 /v1 开头的任何内容设置为发送到 API 的第一个版本。

Alias /v1 /var/www/html/api/api/index.php

将其他所有内容发送到第二个版本:

DocumentRoot "/var/www/html/api2/public"
<Directory "/var/www/html/api2/public">
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
</Directory>

诀窍是将 index.php 添加到别名的末尾。