如何使.htaccess接受某些文件扩展名

时间:2013-08-13 17:20:14

标签: mod-rewrite

我正在构建一个API,我希望人们能够像这样打电话:

http://mydomain.com/api/method.name.json?apikey=1234

将加载到以下内容:

http://mydomain.com/api/index.php?method=method.name&format=json&apikey=1234&field1=1&field2=2

我正在摆弄一些Mod Rewrite代码,但无法让它工作。我要注意如何在URL的末尾添加查询字符串(apikey = 1234& field1 = 1& field2 = 2)。

这是我到目前为止所做的事情并没有奏效。它给了我一个404:

RewriteRule ^([a-zA-Z\.]+).(json|jsonp|xml|php)+)$ index.php?method=$1&format=$2 [L]

我想要实现的目标是什么?提前谢谢!

2 个答案:

答案 0 :(得分:0)

RewriteCond %{REQUEST_URI} !\.(jpg|png|css|js|php)$

答案 1 :(得分:0)

解决了!以下示例中的点:

([a-zA-Z\.]+)

导致index.php作为$1变量返回。为了解决这个问题,我简单地补充说:

RewriteCond $1 !^index\.php$

要排除index.php。将[L]替换为[QSA,L]会将查询字符串添加到结尾。

所以我的最终代码是:

RewriteCond $1 !^index\.php$
RewriteRule ^([a-zA-Z\.]+)\.(json|jsonp|xml|php)$ index.php?method=$1&output=$2 [QSA,L]