2017-06-22 86 views
0

我想在我的yii2 rest api上使用乾淨的URL。yii2 rest api url rewriting(隱藏目錄)

我對我的前端應用程序有乾淨的網址,但我無法爲我的yii2 rest api應用程序創建乾淨的網址。

我按照教程創建了其餘的api(Yii2: RESTful api: tutorial)。其餘的api使用模塊進行版本控制。

已創建兩個.htaccess文件。 一個文件在我的根目錄中,另一個在我的「api/web」目錄中。

根.htaccess文件

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

# follow symbolic links 
Options FollowSymlinks 

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

'API /網絡' .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=$1 [L,QSA] 

瀏覽到 'http://api.localhost.com/v1/music' 給出了一個404頁沒有發現錯誤。

雖然 'http://api.localhost.com/api/web/v1/music' 返回結果

(我想隱藏 'API /網絡/' 在我的網址)

回答

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

    ], 

將此請求組件配置添加到您的主API中

+0

謝謝!它正在工作! 你能提供更多關於'baseUrl'的信息嗎? 該文檔說:'返回該應用程序的相對URL。' http://www.yiiframework.com/doc-2.0/yii-web-request.html#$baseUrl-detail – brouckaertd

-2

配置主機文件中查找/ project_folder/API /網絡