【问题标题】:I want my users to only access my php files, if they try to access the folders I want to include my page 404 file我希望我的用户仅访问我的 php 文件,如果他们尝试访问我想要包含我的页面 404 文件的文件夹
【发布时间】:2014-08-18 18:37:35
【问题描述】:

我有我的查询字符串来包含我的页面,在我的主页中,如下所示,它工作正常,我包含我的页面很好。

但是发生了一些错误,我不知道如何解决这个问题。

我将尝试用一个例子来解释我的问题: 我有一个文件夹“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

【问题讨论】:

  • htp://localhost/website/teachers/documents 如何将您带到任何地方?如图所示,教师文件夹内没有文件夹。
  • 我不知道我是否清楚地理解了您的问题,但是,我的网站文件夹中有一个文件夹教师。在老师里面我有我的documents.php文件,所以当我访问“localhost/website/teachers/documents”时,我正在访问我的文档页面......
  • 我是这样访问的,因为我的htacesss文件,所以我不使用documents.php文件,但documents不是文件夹,它是一个php文件,我的文档页面......

标签: php .htaccess mod-rewrite include


【解决方案1】:

有一个更简单的解决方案。

将此行添加到 .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]

【讨论】:

  • 感谢 Justin lurman,您的解决方案运行良好。但我想包含我自己的 404.php 文件,并在我的 .htaccess 文件中包含您的代码,我得到一个默认的“错误 403”...
  • 您的 htaccess 在哪个文件夹中?
  • 在“网站”文件夹中。
  • 您的文件404.php 是否在/website/inc/ 中?如果是这样,请查看我编辑的答案(“编辑”部分)并尝试一下
  • 如果你想隐藏1st_grade 文件夹,那么你的最后一条规则应该没问题
猜你喜欢
  • 2015-09-23
  • 2015-06-10
  • 2019-05-24
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多