如何在LiteSpeed Web Server中使用.htaccess配置PHP API路由
LiteSpeed下修复PHP API路由的.htaccess配置方案
你这套在Apache正常运行的路由规则到LiteSpeed失效,核心原因是LiteSpeed对Rewrite规则的解析逻辑和Apache存在细节差异,尤其是针对真实文件/目录的判断、URL匹配范围的处理。下面是适配LiteSpeed的修改方案,同时兼容Apache:
Options -MultiViews RewriteEngine On # 可选:将带尾部斜杠的URL重定向到无斜杠版本,避免重复路由 RewriteRule ^(.*)/$ $1 [L,R=301] # 仅当请求的不是真实文件/目录时,转发到API入口文件 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ quizAPI.php?url=$1 [QSA,L]
关键修改说明
- 新增
RewriteCond条件:LiteSpeed默认会优先匹配真实存在的文件或目录,这两行规则确保只有访问不存在的路径时才触发API路由,避免静态资源(如图片、JS)被错误转发到quizAPI.php。 - 调整匹配规则:把原规则的
^(.+)$改为^(.*)$,.*能匹配包括空字符串在内的所有路径,兼容根路径访问的场景,同时覆盖/users/get这类不带斜杠的URL。 - 尾部斜杠重写(可选):统一URL格式,避免同一个API接口出现
/users/get和/users/get/两个地址,也能减少路由匹配的歧义。
验证与注意事项
- 确认LiteSpeed已启用
mod_rewrite模块(大部分商用主机默认开启,若未生效可联系主机服务商开启) - 检查虚拟主机配置中是否设置了
AllowOverride All,确保.htaccess文件能生效 - 在
quizAPI.php中,你可以通过$_GET['url']获取完整路由路径,比如访问example.com/users/get时,$_GET['url']的值为users/get,以此实现路由分发逻辑
内容的提问来源于stack exchange,提问作者parth mangukiya
相关产品推荐
相关产品推荐

