如何通过.htaccess从swagger目录加载指定index.php?
解决Yii2中Swagger UI访问404的.htaccess配置方案
直接修改项目web目录下的.htaccess文件,在现有重写规则前添加一条优先放行Swagger路径的规则即可:
RewriteEngine on # 放行swagger目录下的所有请求,不经过Yii路由处理 RewriteRule ^swagger/ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule>
规则说明
RewriteRule ^swagger/ - [L]:匹配所有以/swagger/开头的请求,-表示不做任何重写,[L]表示这是最后一条规则,Apache会停止后续的重写逻辑,直接去加载对应路径下的文件或目录。- 原有规则保持不变,继续处理其他非文件、非目录的请求,转发到Yii的
index.php进行路由解析。
额外检查
- 确保
swagger目录位于Yii2项目的web目录下(即和.htaccess、index.php同级); - 确认
swagger目录及内部文件的权限设置正确,Apache服务器有读取权限。
内容的提问来源于stack exchange,提问作者Paresh Maheshwari
相关产品推荐
相关产品推荐

