yii2 rest api url 重写(隐藏目录)

yii2 rest api url rewriting (hide directories)

我想在我的 yii2 rest api.

上使用 clean urls

我的前端应用程序有干净的 urls,但我无法为我的 yii2 rest api 应用程序创建干净的 urls。

我按照教程 (Yii2: RESTful api: tutorial) 创建了其余 api。其余 api 使用模块进行版本控制。

已创建两个 .htaccess 文件。 一个文件在我的根目录中,另一个文件在我的 "api/web" 目录中。

root .htaccess 文件

RewriteEngine on
# prevent directory listings
Options -Indexes
IndexIgnore */*

# follow symbolic links
Options FollowSymlinks

RewriteCond %{HTTP_HOST} ^api.localhost [NC]
RewriteRule ^(.*)$ api/web/ [L,PT]

'api/web'.htaccess 文件

RewriteEngine on

# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule ^(.*)\?*$ index.php?r= [L,QSA]

浏览到“http://api.localhost.com/v1/music”时出现 404 页面未找到错误。

虽然“http://api.localhost.com/api/web/v1/music”returns 结果

(我想在我的 url 中隐藏 'api/web/')

配置要查找的主机文件 /project_folder/api/web

   'request' => [
        'baseUrl' => str_replace('/api/web', '', (new \yii\web\Request())->getBaseUrl()),

    ],

在您的主 api 配置中添加此请求组件配置