我的查询字符串包含我的网页,如下所示,我的主页工作正常,我的网页很好。
但是发生了一些错误,我找不到如何解决这个问题。
我会尝试用一个例子来表达我的意思:我有一个文件夹“老师”里面有两个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
答案 0 :(得分:4)
有一个更简单的解决方案。
将此行添加到.htaccess文件的开头:
Options -Indexes
这样,您就无法看到文件夹内容。
编辑:htaccess规则解决方案(位于website
文件夹中)
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]