.htaccess Slim API + AngularJS客户端的RewriteEngine规则

时间:2014-08-07 08:21:56

标签: .htaccess api rest rewrite slim

我主要是出于学习目的,构建一个非常简单的RESTful API,用于提供随机图像或给定ID的特定图像。此API将通过AngularJS客户端(可能)访问,并将与API一起部署到我的Web服务器。 API和Web客户端将驻留在同一个项目中,即同一个根文件夹,它实际上是我的服务器上的子目录,可通过http://foo.com/bar和同一个git存储库访问。也许我稍后会在访问相同的API时创建一个Android客户端。

但是,我无法正确获取.htaccess路由/重写。下面是我建议的目录结构。

root/
|-- bar/
|   |-- api/
|   |   |-- v1/
|   |   |   |-- lib/
|   |   |   |   `-- ImageFactory.php
|   |   |   |-- vendor/
|   |   |   |   `-- slim/
|   |   |   |-- .htaccess (#1)
|   |   |   |-- composer.json
|   |   |   `-- index.php
|   |-- public_html/
|   |   |-- css/
|   |   |-- img/
|   |   |   `-- bar/
|   |   |-- js/
|   |   |   |-- controllers/
|   |   |   |-- directives/
|   |   |   |-- filters/
|   |   |   |-- lib/
|   |   |   |-- services/
|   |   |   |-- vendor/
|   |   |   `-- app.js
|   |   |-- views/
|   |   |-- api.php
|   |   `-- index.html
|   `-- .htaccess (#2)

我认为API的每个主要返工都需要一个新版本,这个版本取决于它自己的Slim版本,我应该多年来更改版本。

但是.htaccess文件怎么样?我认为对http://foo.com/bar的调用应该重定向到public_html/index.html,换句话说是JS客户端应用程序。但是,对http://foo.com/bar/api/v1的调用应重定向到public_html/api.php,并将版本v1作为参数,以便api.php可以加载正确的API应用。

我应该如何为RewriteEngine#1和#2编写.htaccess规则?我建议的结构有什么问题吗?我错过了什么吗?请帮助有需要的开发人员!

1 个答案:

答案 0 :(得分:1)

要实现您的目标,您只需在/root/bar/.htaccess文件中添加一些规则即可。

如果redirect表示internal rewrite(转发到页面而不更改浏览器中的网址),那么您可以将此代码放入htaccess

RewriteEngine On
RewriteBase /bar/

RewriteRule ^$ public_html/index.html [L]
RewriteRule ^api/v([1-9][0-9]*)$ public_html/api.php?version=$1 [L]