Slim框架.htaccess重定向异常问题求助
问题根源与修复方案
我一眼就看出问题出在你的.htaccess规则上——第一个重写规则会拦截所有请求,导致后面指向schedule.php和messages.php的规则完全不会被执行!
为什么会这样?
你的第一条规则:
RewriteRule ^ index.php [QSA]
这里的^是正则表达式的「字符串开头」匹配符,但你没有加上结束符或者特定的路径匹配,所以任何进来的请求(包括/v1/my-calendar)都会被这条规则捕获,直接转发到index.php,根本轮不到后面的规则生效。这就是为什么调用schedule里的接口会异常——请求压根没走到schedule.php里!
修复后的.htaccess配置
根据你的接口路径,我们需要给每个规则指定精确的匹配模式,确保对应路径的请求转发到正确的文件:
RewriteEngine On # 匹配 profile 相关接口,转发到 index.php RewriteRule ^v1/profile(/.*)?$ index.php [QSA,L] # 匹配 my-calendar 相关接口,转发到 schedule.php RewriteRule ^v1/my-calendar(/.*)?$ schedule.php [QSA,L] # 注意:你的文件是 message.php,但规则里写的是 messages.php,这里修正了笔误 # 匹配 messages 相关接口,转发到 message.php RewriteRule ^v1/messages(/.*)?$ message.php [QSA,L]
关键细节说明
^v1/profile(/.*)?$:精确匹配以v1/profile开头的路径,后面的(/.*)?允许路径带额外的子路径(比如v1/profile/123),同时$确保匹配到字符串结束,避免误匹配。L标志:表示这条规则匹配后就停止处理后续规则,避免规则冲突。- 笔误提醒:你的规则里写的是
messages.php,但实际文件是message.php,我已经在修复后的代码里修正了这个问题,如果是故意命名的话,你再改回去就行。
验证方法
修改完.htaccess后,重新调用http://192.168.1.139/projects/interlinx-api/v1/my-calendar,应该就能正常走到schedule.php的逻辑里了。如果还有问题,可以检查服务器的rewrite模块是否开启,或者查看PHP的错误日志排查具体异常。
内容的提问来源于stack exchange,提问作者Sagar Patil
相关产品推荐
相关产品推荐

