页面404错误
2022年11月10日 14:34 大约 2 分钟
# 页面404错误
访问apidoc页面时,以下几个原因有可能导致页面显示 404 错误
通常该问题会报出 Request failed with status code 404
或Cannot 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
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
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
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
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
2
3
4
5
6
7
8
# 5、apidoc的前端文件版本不匹配
请详细参考添加前端页面 下载对应的前端文件