Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
我希望我的用户只访问我的php文件,如果他们试图访问我想要包含我的404页文件的文件夹_Php_.htaccess_Mod Rewrite_Include - Fatal编程技术网

我希望我的用户只访问我的php文件,如果他们试图访问我想要包含我的404页文件的文件夹

我希望我的用户只访问我的php文件,如果他们试图访问我想要包含我的404页文件的文件夹,php,.htaccess,mod-rewrite,include,Php,.htaccess,Mod Rewrite,Include,我有我的查询字符串来包括我的页面,在我的主页中,就像你在下面看到的,它工作正常,我包括我的页面也很好 但有些事情发生了,我不知道如何解决这个问题 我将尝试用一个例子来解释我的isse:我有一个文件夹“teachers”,里面有两个pdf文档和一个页面“documents.php”。 要访问此文档页面,请使用Im访问:htp://localhost/website/teachers/documents“,而且它工作得很好 但如果我成功了”htp://localhost/website/teache

我有我的查询字符串来包括我的页面,在我的主页中,就像你在下面看到的,它工作正常,我包括我的页面也很好

但有些事情发生了,我不知道如何解决这个问题

我将尝试用一个例子来解释我的isse:我有一个文件夹“teachers”,里面有两个pdf文档和一个页面“documents.php”。 要访问此文档页面,请使用Im访问:htp://localhost/website/teachers/documents“,而且它工作得很好

但如果我成功了”htp://localhost/website/teachers/“,我可以访问我的pdf文档和页面,如下图所示

但我不希望这样,我希望如果有用户试图访问”htp://localhost/website/teachers/,我想包括我的404文件(
require_once('inc/404.php');

我的查询字符串:

@$url = $_GET['url'];
$url = explode('/', $url);
$url[0] = ($url[0] == NULL ? 'index' : $url[0]);

if(file_exists('inc/'.$url[0].'.php')){
     require_once('inc/'.$url[0].'.php');
}
elseif(file_exists($url[0].'/'.$url[1].'/'.$url[2].'.php')){
     require_once($url[0].'/'.$url[1].'/'.$url[2].'.php');
}
elseif(@file_exists($url[0].'/'.$url[1].'.php')){
     require_once($url[0].'/'.$url[1].'.php');
}
else{
     require_once('inc/404.php');
}
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1
你知道我做错了什么而没有得到我想要的结果吗

我的htaccess文件:

@$url = $_GET['url'];
$url = explode('/', $url);
$url[0] = ($url[0] == NULL ? 'index' : $url[0]);

if(file_exists('inc/'.$url[0].'.php')){
     require_once('inc/'.$url[0].'.php');
}
elseif(file_exists($url[0].'/'.$url[1].'/'.$url[2].'.php')){
     require_once($url[0].'/'.$url[1].'/'.$url[2].'.php');
}
elseif(@file_exists($url[0].'/'.$url[1].'.php')){
     require_once($url[0].'/'.$url[1].'.php');
}
else{
     require_once('inc/404.php');
}
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

有一个更简单的解决办法

将此行添加到.htaccess文件的开头:

Options -Indexes
这样,您将无法看到文件夹内容


编辑:htaccess规则解决方案(位于
网站
文件夹中)


htp://localhost/website/teachers/documents
带你去哪里?如图片所示,教师文件夹中没有文件夹。我不知道我是否清楚地理解了你的问题,但是,我的网站文件夹中有一个教师文件夹。在教师内部,我有我的documents.php文件,所以当我访问“”时,我访问我的文档页面…我这样访问,因为我的htacesss文件,所以我不使用documents.php文件,但文档不是文件夹,它是一个php文件,我的文档页面…谢谢Justin lurman,您的解决方案很好。但是我想包括我自己的404.php文件,在我的.htaccess文件中使用您的代码,我会得到一个默认的“错误403”…哪个文件夹是您的htaccess?在“网站”文件夹中。您的文件
404.php
是否在
/Website/inc/
中?如果是这样,请查看我编辑的答案(“编辑”部分)并尝试它如果您想隐藏
1st_grade
文件夹,则是您的上一条规则应该是确定的