我有我的查询字符串以包含我的页面,就像下面看到的那样在我的主页中,并且工作正常,我也包括我的页面.
但是发生了一些错误,我无法找到解决方法.
我将举一个例子来说明问题:我有一个文件夹“ teachers”,里面有两个pdf文档和一个页面“ documents.php”.
要访问此文档页面,请访问:“ 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');
}
您是否看到我做错了没有得到我想要的结果?
我的htaccess文件:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$index.php?url=$1
解决方法:
有一个更简单的解决方案.
将此行添加到您的.htaccess文件的开头:
Options -Indexes
这样,您将看不到文件夹内容.
编辑:htaccess规则解决方案(在网站文件夹中)
ErrorDocument 404 /website/inc/404.php
RewriteEngine On
RewriteBase /website/
RewriteRule ^teachers/$- [R=404,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$index.php?url=$1 [L]