2010-09-02 66 views
0

我想要.htaccess重写,我该如何做这个senario?

例如。

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

等于

www.domain.com/api/jason/?method =爆&键= ABC &参数1 =和&参数2 =一个&参数3 = b & param4 = C ...

欢呼

詹姆斯

+0

这是否意味着“jason”或“json”? :-) – 2010-09-03 00:02:24

+0

我想他在重写的URL中使用了'jason',以避免与原始URL冲突。 – casablanca 2010-09-03 00:03:56

+0

大声笑,这是一个错别字对不起!!!!!!应该已经www.domain.com/api/json/... – 2010-09-03 00:15:29

回答

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 

即:东西都尾随可选PARAMS成一个单一的参数。

+0

嗨,感谢您的回答,我知道有超过10个参数是愚蠢的,但我想知道是否有一个程序化的方式来做到这一点? – 2010-09-03 00:04:57

+0

@詹姆斯林:如果你有这么多未命名的参数,你为什么需要它们成为独立的参数呢? – casablanca 2010-09-03 00:18:21

+0

@casablanca因为从URL看起来更清洁 例如。 www.domain.com/api/json/add/1/2 www.domain.com/api/json/multiply/1/2/3 – 2010-09-03 01:10:56

1

我不认为这是可以动态地计算出的param S上的号码,但你可以关闭做一些事情:

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

这将提取methodkey的个体,但把所有的附加参数为params ,您可以稍后在脚本中进行拆分。