页面404错误

2022年11月10日 14:34 大约 2 分钟

# 页面404错误

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

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

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

# 1、 TP5版本需手动注册路由

请参考安装说明/guide/install/#tp5添加路由

# 2、伪静态配置

如果没有正确配置项目伪静态规则,会导致无法正常访问路由

解决方案1:配置伪静态即可解决

  • 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>
1
2
3
4
5
6
7
8
9
10
  • Nginx
location / {
    if (!-e $request_filename){
    rewrite ^(.*)$ /index.php?s=$1 last; 
    break;
    }
}
1
2
3
4
5
6

解决方案2:配置前端项目请求host参数:

// public/apidoc/config.js

var config = {
  // 请求地址host
  HTTP:{
    HOSTS: [
      {
        title:"",
        host:"index.php"
      }
    ]
  }
};
1
2
3
4
5
6
7
8
9
10
11
12
13

# 3、tp项目根目录配置问题

有的用户配置站点目录为项目根目录或更上级目录,而tp的入口为public目录,就会导致无法正确的访问路由,也会报出404 Cannot read property 'config' of undefined 的错误

解决方案1:将站点目录配置为public目录,并正确配置伪静态。

解决方案2:配置前端项目请求host参数:

// public/apidoc/config.js
var config = {
  // 请求地址host
  HTTP:{
    HOSTS: [
      {
        title:"",
        host:"public/index.php"
      }
    ]
  }
};
1
2
3
4
5
6
7
8
9
10
11
12

# 4、apidoc路由未注册成功

基于其它一些开源的admin项目使用apidoc时,由于admin项目可能对路由进行过调整,导致apidoc插件的路由无法自动注册成功。

解决方案:可尝试在你的项目中添加以下路由

Route::group('apidoc', function () {
    $controller_namespace = '\hg\apidoc\Controller@';
    Route::get('config'     , $controller_namespace . 'getConfig');
    Route::get('apiData'     , $controller_namespace . 'getApidoc');
    Route::get('mdMenus'     , $controller_namespace . 'getMdMenus');
    Route::get('mdDetail'     , $controller_namespace . 'getMdDetail');
    Route::post('verifyAuth'     , $controller_namespace . 'verifyAuth');
});
1
2
3
4
5
6
7
8

# 5、apidoc的前端文件版本不匹配

请详细参考添加前端页面 下载对应的前端文件