404错误

HG大约 2 分钟

404错误

页面不存在

访问Apidoc页面,无法正常显示apidoc前端页面,报出404页面不存在

解决方案:

1、检查apidoc前端文件是否放在正确的位置(通常在public目录下),以及前端文件夹命名是否正确(默认为apidoc)。

2、检查运行环境或框架是否关闭了静态资源的访问,如Hyperf需要手动开启静态资源访问的(配置Hyperf静态资源访问)。

页面提示错误

error-400

访问apidoc页面时,以下几个原因有可能导致页面显示 404 错误

通常该问题会报出 Request failed with status code 404Cannot read property 'config' of undefined当前访问路由未定义或不匹配等错误。

这并不是文件不存在,而是apidoc会自动注册一些所需的路由,由于某种原因导致未注册成功

1、伪静态配置

Tp5.1Tp6Laravel通过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']);
});