Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
问题包括正确的404.php文件_Php - Fatal编程技术网

问题包括正确的404.php文件

问题包括正确的404.php文件,php,Php,我有一个项目,我有一个管理小组 我有一个网站文件夹,在这个文件夹里,我有一个管理员和一个模板文件夹 在我的“Admin”文件夹中: 1文件夹“新闻” 1文件夹“类别” 1 index.php->查询字符串的位置 1文件夹“包括”我的“home.php”、“header.php”和“404.php” 在模板文件夹中,我有我的网站页面 这是我的查询字符串,它位于admin index.php文件中,用于进行导航: $whitelist = array('inc/home.php', 'inc/404

我有一个项目,我有一个管理小组

我有一个网站文件夹,在这个文件夹里,我有一个管理员和一个模板文件夹

在我的“Admin”文件夹中:

1文件夹“新闻”

1文件夹“类别”

1 index.php->查询字符串的位置

1文件夹“包括”我的“home.php”、“header.php”和“404.php”

在模板文件夹中,我有我的网站页面

这是我的查询字符串,它位于admin index.php文件中,用于进行导航:

$whitelist = array('inc/home.php', 'inc/404.php', 
            'news/index.php','news/news-create.php','categories/categories-edit.php',
            'categories/categories-create.php', 
            'index.php', 'inc/header.php','inc/footer.php');

if(empty($_GET['nav'])){
    require('inc/home.php');
}
elseif(in_array($_GET['nav'].'.php', $whitelist)){
    require($_GET['nav'].'.php');
}
else{
    require('inc/404.php');
}
但是我有个问题。

如果我访问了一个不存在的url,例如:htp://localhost/website/admin/news/news

我想包括我的管理员/includes foder的404.php文件,但我包括我的网站文件夹的404.php文件

我不明白这怎么可能

但如果我访问此url,例如:htp://localhost/website/admin/dashboard.php?nav=errortesting,

这个url也不存在,但我得到了正确的404.php文件

似乎只有当我有“nav”变量时,才会包含404.php文件

你明白为什么会这样吗

我的网站文件夹中有一个.htaccess文件(但我只用于网站页面,而不是管理页面):


您应该配置Web服务器(Apache、nginx等)以自定义404错误。仅当参数“nav”为空时,执行此操作的方式才有效。404错误来自Web服务器,因为在给定的URL中找不到php脚本/文件。您应该使用带有以下代码的:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* ./
这将把每个不发送文件或文件夹的请求重定向到index.php

要直接重定向到404页面,请将最后一行更改为:

RewriteRule .* ./inc/404.php

看起来这可能是一个路由问题。您的管理员文件夹和主文件夹的
.htaccess
是什么样子的?谢谢您的回答。我用我的.htaccess文件更新我的问题!我不知道你为什么被降级!但我现在投票赞成,你知道我如何配置我的xampp吗?但如果我在试图访问一个不存在的页面时删除了htaccess文件,我得到的不是404.php文件,而是一个默认的未找到对象页面。。。所以应该是关于我的htaccess!
RewriteRule .* ./inc/404.php