.htaccess重写,我该怎么做这个场景?

时间:2010-09-02 23:50:44

标签: .htaccess url-rewriting

我想

例如

... www.domain.com/api/json/implode/abc/and/a/b/c

等于

... www.domain.com/api/jason/?method=implode&key=abc&param1=and&param2=a&param3=b&param4=c

2 个答案:

答案 0 :(得分:1)

你可以这样做:

RewriteRule ^/api/json/([/]*)/([/]*)$ /api/jason/method=$1&key=$2
RewriteRule ^/api/json/([/]*)/([/]*)/([/]*)$ /api/jason/method=$1&key=$2&param1=$3
RewriteRule ^/api/json/([/]*)/([/]*)/([/]*)/([/]*)$ /api/jason/method=$1&key=$2&param1=$3&param2=$4
RewriteRule ^/api/json/([/]*)/([/]*)/([/]*)/([/]*)/([/]*)$ /api/jason/method=$1&key=$2&param1=$3&param2=$4&param3=$5
RewriteRule ^/api/json/([/]*)/([/]*)/([/]*)/([/]*)/([/]*)/([/]*)$ /api/jason/method=$1&key=$2&param1=$3&param2=$4&param3=$5&param4=$6
# keep expanding this pattern out for however many paramas you need to be
# able to handle...

但清洁工将是这样的:

RewriteRule ^/api/json/([/]*)/([/]*)$ /api/jason/method=$1&key=$2
RewriteRule ^/api/json/([/]*)/([/]*)/(.*)$ /api/jason/method=$1&key=$2&params=$3

ie:将所有尾随的可选参数填充到单个参数中。

答案 1 :(得分:1)

我认为不可能动态计算出param的数量,但你可以做一些接近的事情:

RewriteRule ^/api/json/([^/]+)/([^/]+)/(.*) /api/jason/?method=$1&key=$2&params=$3

这会分别提取methodkey,但会将所有其他参数放入params,您可以稍后在脚本中拆分。