Apache PHP RESTful服务器的mod_重写
我正在为mac上本地的API开发一个PHP RESTful服务器 我已成功启用mod_rewrite,并允许站点目录(~/Sites/api)进行覆盖 在~/Sites/api中是.htaccess文件和index.php。我想将所有请求重写为*to index.php。我需要保留查询参数,但仅此而已 我在.htaccess文件中尝试了以下操作:Apache PHP RESTful服务器的mod_重写,apache,rest,mod-rewrite,url-rewriting,Apache,Rest,Mod Rewrite,Url Rewriting,我正在为mac上本地的API开发一个PHP RESTful服务器 我已成功启用mod_rewrite,并允许站点目录(~/Sites/api)进行覆盖 在~/Sites/api中是.htaccess文件和index.php。我想将所有请求重写为*to index.php。我需要保留查询参数,但仅此而已 我在.htaccess文件中尝试了以下操作: Options +FollowSymLinks RewriteEngine On RewriteRule (.*) index.php [QSA,NC
Options +FollowSymLinks
RewriteEngine On
RewriteRule (.*) index.php [QSA,NC,L]
这将导致500:内部服务器错误
注释掉FollowSymLinks
行会出现403:禁止的错误
我可以很好地访问index.php,而无需进行重写
如果您能提供任何帮助,我们将不胜感激。我此刻想哭
谢谢,
罗斯
其中,处理程序是传递给index.php脚本的内容。例如,请求
将被改写为
问题是
[L]
意味着停止重写此URL,但您正在使用index.php
生成一个新URL,该URL也将被重写,从而导致无限循环
添加将
index.php
从重写中排除的RewriteCond
。您应该排除index.php
@Gumbo:如果您不介意,请在您的声明中提供解释。:@kaziTanvirAhsan该评论已经存在三年多了。我不知道它应该是什么意思。@kaziTanvirAhsan好的,现在我知道它应该是什么意思了:^api/(.*)$
也将匹配api/index.php
。因此,应排除index.php
,以符合此规则,例如。g、 ,再加上一个RewriteCond$1=php
。
RewriteRule ^api/(.*)$ index.php?handler=$1 [L,QSA]