用于PHP RESTful Server的mod_rewrite

时间:2011-01-05 14:17:38

标签: apache rest mod-rewrite url-rewriting

我正在我的mac上为本地API开发一个PHP RESTful服务器。

我已设法启用mod_rewrite并允许覆盖站点目录(〜/ Sites / api)。

在〜/ Sites / api中是.htaccess文件和index.php。我想将对http://localhost/~myusername/api/ *的所有请求重写为index.php。我需要保留查询参数,但就是这样。

我在.htaccess文件中尝试了以下内容:

Options +FollowSymLinks
RewriteEngine On
RewriteRule (.*) index.php [QSA,NC,L]

这给出了500:内部服务器错误。

注释掉FollowSymLinks行会产生403:禁止错误。

我可以在没有重写的情况下访问index.php。

您可以提供的任何帮助将非常感谢。我觉得此刻正在哭泣。

谢谢, 罗斯

2 个答案:

答案 0 :(得分:7)

RewriteRule ^api/(.*)$ index.php?handler=$1 [L,QSA]

处理程序是传递给index.php脚本的地方。例如,

的请求
  

http://localhost/~myusername/api/getUser/myusername

将被重写为

  

http://localhost/~myusername/api/index.php?handler=getUser/myusername

答案 1 :(得分:1)

问题在于[L]表示停止重写网址,但您正在生成一个index.php的新网址,该网址也会被重写,从而导致无限循环

添加RewriteCond,不包括index.php被重写。