Laravel Lumen 5.8含字符.的路由无法正常工作问题排查
解决Lumen 5.8路由含
.0后缀时Apache报错的问题 问题分析
当路由包含.0这类带点的版本号时,Apache会默认将其识别为文件扩展名,尝试匹配服务器上的对应文件,而非把请求转发给Lumen的入口文件public/index.php,因此会出现非Laravel风格的报错页面。
解决方案
1. 禁用Apache的MultiViews功能
在项目根目录的.htaccess文件(无则创建)中添加以下配置:
Options -MultiViews
MultiViews是Apache的内容协商机制,会自动尝试匹配带扩展名的请求,禁用后可避免Apache错误解析路由中的点号。
2. 确保Rewrite规则覆盖所有请求
检查.htaccess中的Rewrite规则,保证带点的路由能被正确转发到Lumen处理:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
该规则会判断请求目标不是真实目录或文件时,将所有请求转发到index.php,交由Lumen处理路由逻辑。
3. 确认Apache的mod_rewrite模块已启用
- 打开XAMPP控制面板,点击Apache的
Config按钮,选择httpd.conf - 找到
#LoadModule rewrite_module modules/mod_rewrite.so,删除行首的#注释 - 重启Apache服务
4. 调整PHP的cgi.fix_pathinfo配置(可选)
若上述方法无效,修改PHP配置文件php.ini:
cgi.fix_pathinfo=0
该配置会禁止PHP尝试解析不存在的文件路径,避免Apache错误处理请求。修改后重启Apache和PHP服务。
内容的提问来源于stack exchange,提问作者Hans
相关产品推荐
相关产品推荐

