Php 不同api版本的重写规则
我正在为我的Slim Api寻找一个重写规则,将其放入.htaccess中,允许我使用不同的Api版本,例如:Php 不同api版本的重写规则,php,.htaccess,api,mod-rewrite,slim,Php,.htaccess,Api,Mod Rewrite,Slim,我正在为我的Slim Api寻找一个重写规则,将其放入.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
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
项目文件夹结构如下所示:
- 原料药
- 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
但是我仍然在寻找一些自动化的东西。您还没有定义初始版本指定之后的原始请求URI是由这个规则处理的,所以我假设index.php中的脚本可以处理这个问题
RewriteEngine On
RewriteRule ^/([A-z0-9_\.\-]+)/(.*)$ /$1/index.php [NC]
注意。这将在第一个斜杠之前使用任何字母数字字符(加下划线和连字符),并将其用作提供服务的目录。它还允许在版本指示符后面没有任何内容的请求(如
http://example.api.com/v1/
)对apache2使用类似nginx的指令try_files
,你可以说apache2,例如,你可以看到这个问题,我不明白如何将其应用于我的问题,你能给我举个例子吗?对不起(我不明白你的问题。我不知道如何使用nginx来解决我的问题。我这样说就像nginx指令try_files
它只是一个例子。你需要RewriteCond
dericive是的,Slim Fragmework正在处理所有事情,我只需要重定向到正确的index.php,实时到请求的版本.你给我的是我需要的,但给了我500个错误..我在问题中添加了一个编辑,但仍然没有解决我的问题,thanks@dvdciri-对不起,这会教我不要正确阅读我键入的内容。经过编辑,现在应该可以使用了。注意,我添加了一个文字。(点)到斜杠前的匹配字符,以防需要http://example.api.com/v1.1/something
好的,它的工作原理是,我有这样的website.com/p_v1/wishes
,但如果我有这样的website.com/p_v1/user/login
,它就不起作用了。最后一个错误是500one@dvdciri-已编辑。已修复。(承诺):)