删除部分URI,然后传递给脚本

时间:2017-12-20 09:58:22

标签: php apache .htaccess mod-rewrite

目前我的.htaccess看起来像这样:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [QSA]

所有URI都传递给PHP脚本,然后解析它并返回内容。

现在我想实现一个版本控制系统,根据所调用的版本,会有不同的脚本处理URI。

那是:

  • 如果我致电/v1/countries/es/users,我想将URI /countries/es/users传递给脚本v1.php
  • 如果我致电/v2/users/314/settings,那么我希望将URI /users/314/settings传递给脚本v2.php

我尝试过像

这样的事情
RewriteRule ^/?v(\d)/.*$ v$1.php [QSA]

这会将执行发送到特定于版本的脚本,但是我仍然希望在传递给脚本时删除URI的/v1/初始部分,即我希望脚本接收到没有初始版本部分的URI 。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

apache document: Apache mod_rewrite Introduction明确解释。

您可以将其作为参数传递,并使用$_GET['route']获取没有第一个版本部分的URI部分:

RewriteRule ^/v(\d)/(.*)$ v$1.php?param1=$2 [QSA,L]
RewriteRule ^/v(\d)/(.*)/(.*)$ v$1.php?param1=$2&param2=$3 [QSA,L]