Slim 3 - 使用重写规则从url中删除subdir

Efb*_*fbi 5 apache .htaccess url-rewriting slim-3

我在A2Hosting上有一个共享主机,我最近将我的主域名public_html/移到了public_html/subdir/

这是结构:

/public_html
 /subdir(site files of main domain)
  /api
  index.php  
Run Code Online (Sandbox Code Playgroud)

我目前的htaccess(public_html)是:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.
RewriteRule ^(.*)$ /subdir/$1 [L]
Run Code Online (Sandbox Code Playgroud)

当我之前打电话给我的APi时: domain.com/api/

但现在是: domain.com/subdir/api/

我的htaccess api是:

RewriteEngine On
RewriteBase /api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)

如何删除网址中的"subdir"以保持我之前的api?但是仍然用我当前的htaccess指向我的子目录?

谢谢

wp7*_*8de 4

/api一种方法是从根目录中的主 .htaccess 文件重写,如下所示:

RewriteEngine On
RewriteBase /
RewriteRule ^api/(.*)$ ../subdir/api/$1 [R,L,QSA]
Run Code Online (Sandbox Code Playgroud)

新的 /subdir/api 文件夹中的 .htaccess 文件可以保持原样。只需要调整RewriteBase。

另一种方法是从以前的文件夹重写/api(如果您出于某种原因保留它):

RewriteEngine On
RewriteBase /api
RewriteRule ^(.*)$ ../subdir/api/$1 [L]
Run Code Online (Sandbox Code Playgroud)