重写不同api版本的规则

时间:2016-04-19 15:02:56

标签: php .htaccess api mod-rewrite slim

我正在为我的Slim Api寻找一个RewriteRule来放入.htaccess,允许我使用不同的api版本,例如:

i.e.
v1/something -> v1/index.php
v1/something/something -> v1/index.php

i.e.
v2/something-> v2/index.php
v2/something/something -> v2/index.php

i.e.
p_v1/something-> p_v1/index.php
p_v1/something/something -> p_v1/index.php

项目文件夹结构如下:

  • API
    • P_V1
    • V1
    • V2
      • 的index.php
      • 其他...

提前感谢您的帮助!

修改

这个工作正常:

RewriteRule ^ v1/index.php [QSA,L]

但是只使用v1(正如预期的那样),我需要找到适合每个版本api的东西。

修改2

目前我已经找到一种解决方法,手动添加每个新的api版本:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^v1/(.*)$ v1/index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^p_v1/(.*)$ p_v1/index.php

但我仍在寻找自动化的东西。

1 个答案:

答案 0 :(得分:0)

您尚未定义初始版本指定后的原始请求URI由此规则处理,因此我假设您在index.php处的脚本处理该问题。

RewriteEngine On
RewriteRule ^/([A-z0-9_\.\-]+)/(.*)$ /$1/index.php [NC]

NB。这将在第一个斜杠之前采用任何字母数字字符(加上下划线和连字符),并将其用作要提供的目录。它还允许在版本指示符之后没有任何内容的请求(如http://example.api.com/v1/