404错误
大约 2 分钟
404错误
页面不存在
访问Apidoc页面,无法正常显示apidoc前端页面,报出404页面不存在
解决方案:
1、检查apidoc前端文件是否放在正确的位置(通常在public目录下),以及前端文件夹命名是否正确(默认为apidoc)。
2、检查运行环境或框架是否关闭了静态资源的访问,如Hyperf需要手动开启静态资源访问的(配置Hyperf静态资源访问)。
页面提示错误
访问apidoc页面时,以下几个原因有可能导致页面显示 404 错误
通常该问题会报出 Request failed with status code 404
或Cannot read property 'config' of undefined
或当前访问路由未定义或不匹配
等错误。
这并不是文件不存在,而是apidoc会自动注册一些所需的路由,由于某种原因导致未注册成功
1、伪静态配置
Tp5.1
、Tp6
、Laravel
通过Nginx/Apache代理的网站,如果没有正确配置项目伪静态规则,可能会导致无法正常访问路由
解决方案1:配置伪静态规则
以下为Tp6的伪静态规则,其它框架请自行到官网查看
- Apache
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?$1 [QSA,PT,L]
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
</IfModule>
- Nginx
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
解决方案2:配置前端项目请求host参数:
以下index.php为tp5.1/tp6的,其它框架视情况而定
// public/apidoc/config.js
var config = {
// 请求地址host
HTTP:{
HOSTS: [
{
title:"",
host:"/index.php"
}
]
}
};
2、项目根目录配置问题
有的用户配置站点目录为项目根目录或更上级目录,而网站的入口文件在public目录,就会导致无法正确的访问路由,也会报出404 Cannot read property 'config' of undefined
的错误
解决方案1:将站点目录配置正确的目录,并正确配置伪静态。
解决方案2:配置前端项目请求host参数:
// public/apidoc/config.js
var config = {
// 请求地址host
HTTP:{
HOSTS: [
{
title:"",
host:"/public/index.php"
}
]
}
};
3、apidoc路由未注册成功
基于其它一些二次封装过的项目框架使用apidoc时,由于项目可能对路由进行过调整,导致apidoc插件的路由无法自动注册成功。
解决方案:可尝试在你的项目中添加以下路由
use hg\apidoc\providers\CommonService;
/**
* Apidoc Routes
*/
CommonService::registerApidocRoutes(function ($item){
// 这里的路由注册根据自身框架调整
Router::addRoute($item['method'],$item['uri'],$item['callback']);
});