Apache 从第一个站点后面的另一个站点提供API

Apache 从第一个站点后面的另一个站点提供API,apache,.htaccess,mod-rewrite,alias,virtualhost,Apache,.htaccess,Mod Rewrite,Alias,Virtualhost,我有基于Drupal7的旧解决方案和基于Drupal8的新解决方案。他们都为自己的移动应用程序提供API。(URL可以很容易区分)为了维护用户的平滑迁移,我想让旧的解决方案保持原样,并在其背后提供新版本的API,它在模式上有明显的区别,如/oauth/token、/API/v1/、/API/v2/ 我尝试过用不同的结果配置apache的不同方法,但并不完全符合我的需要。我试过: 与别名一起配置虚拟主机; 将DocumentRoot更改为/var/www(其中我有docroot和docroot n

我有基于Drupal7的旧解决方案和基于Drupal8的新解决方案。他们都为自己的移动应用程序提供API。(URL可以很容易区分)为了维护用户的平滑迁移,我想让旧的解决方案保持原样,并在其背后提供新版本的API,它在模式上有明显的区别,如/oauth/token、/API/v1/、/API/v2/

我尝试过用不同的结果配置apache的不同方法,但并不完全符合我的需要。我试过: 与别名一起配置虚拟主机; 将DocumentRoot更改为/var/www(其中我有docroot和docroot new) 以不同的方式配置.htaccess

<VirtualHost *:80>
    ServerName ${APACHE_SERVERNAME}
    ServerAlias test.*
    DocumentRoot /var/www/docroot/
  #this is example with phpinfo, works well
    Alias "/info.php" "/var/www/docroot-new/"
    #Just to simplify I'm trying to serve only one API endpoint from    
    new solution
    Alias /api/v1/mobile-ui/ "/var/www/docroot-new/"
    #And auth endpoint
    Alias "/oauth/token/" "/var/www/docroot-new/"
</VirtualHost>

<Directory "/var/www/docroot/">
   DirectoryIndex index.php
   Options Indexes FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

<Directory "/var/www/docroot-new/">
   DirectoryIndex index.php
   Options Indexes FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

ServerName${APACHE_ServerName}
服务器别名测试*
DocumentRoot/var/www/docroot/
#这是phpinfo的示例,运行良好
别名“/info.php”“/var/www/docroot new/”
#为了简化,我尝试只为来自的一个API端点提供服务
新解决方案
别名/api/v1/mobile ui/“/var/www/docroot new/”
#和验证端点
别名“/oauth/token/”/var/www/docroot new/”
DirectoryIndex.php
选项索引跟随符号链接
允许超越所有
命令允许,拒绝
通融
要求所有授权
DirectoryIndex.php
选项索引跟随符号链接
允许超越所有
命令允许,拒绝
通融
要求所有授权
在这种情况下,旧的解决方案得到了很好的解决,但新的解决方案无法得到适当的处理。 如果我将DocumentRoot更改为/var/www/,那么它们都可以正常工作,但显然url中有一个dir名称。我想。htaccess可以帮我,但我不是专家,也找不到解决方案。
我还为apache打开了添加日志记录,并能够检查诸如mod_rewrite匹配之类的详细信息(实际上对我没有多大帮助)

因此,我自己找到了解决方案。这比以前的想法还要好。只是代理查询

ProxyPassMatch "/api(.*)"  "http://new-solution.local/api$1"
ProxyPassReverse "/api(.*)"  "http://new-solution.local/api$1"

ProxyPass "/oauth/token"  "http://new-solution.local/oauth/token"
ProxyPassReverse "/oauth/token"  "http://new-solution.local/oauth/token"
希望它能帮助别人解决类似的问题