htaccess文件重写API路由

问题描述

我试图将所有传入流量重定向到我的网站,并将其重定向到index.PHP,并将其余的url放入路径变量中。我的根目录中也有index.html,如果用户直接访问它,我希望将它们重新路由到index.PHP脚本。

  RewriteEngine On
  RewriteBase /
  RewriteCond $1 !^index\.html  
  RewriteCond $1 !^index\.PHP
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^index\.html?$ / [NC,R,L]
  RewriteRule ^(.*)$ index.PHP?path=$1 [L,QSA]

重新路由似乎工作正常,但是我所有的/api/index.PHP?route=xx&mode=xx似乎也都被重新路由了。有没有办法从重写条件中排除api目录?

解决方法

能否请您尝试以下。这是在检查REQUEST_URI是否不是从/app/index.php开始,然后将所有内容连同传递的参数一起重新路由到index.php,目前无法对其进行测试,将对其进行几分钟的测试

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/api/index\.php/?$ [NC]
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]


RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} ^/api/index(\.html)/?$ [NC]
RewriteRule ^(.*)$ index.php [NC,L]