我主要是出于学习目的,构建一个非常简单的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
规则?我建议的结构有什么问题吗?我错过了什么吗?请帮助有需要的开发人员!
答案 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]