我有一个项目,我有一个管理小组。
我有一个网站文件夹,在这个文件夹里面,我有一个管理员和一个模板文件夹。
在“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');
}
但我遇到了问题。
如果我访问了一个不存在的网址,例如:htp:// localhost / website / admin / news / news
我想要包含我的admin /的404.php文件/包括foder,但我包含我的网站文件夹的404.php文件。
我不明白这是怎么回事!
但如果我访问了这个网址:htp://localhost/website/admin/dashboard.php?nav = errortesting,
这个网址也不存在,但是我得到了我的管理文件夹中正确的404.php文件。
似乎我的404.php文件只包含在我的“nav”变量中。
你明白为什么会发生这种情况吗?
我的网站文件夹中有一个.htaccess文件(但我只是用于网站页面,而不是用于管理页面):
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1
答案 0 :(得分:0)
您应该配置您的网络服务器(Apache,nginx,...)来自定义404错误。你这样做的方式只有在参数' nav'是空的。 404错误来自网络服务器,因为没有从给定的URL
找到php脚本/文件答案 1 :(得分:0)
您应该使用.htaccess代码:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* ./
这会将每个没有文件或文件夹的请求重定向到index.php
直接重定向到404页面,将最后一行更改为:
RewriteRule .* ./inc/404.php