【问题标题】:how to prevent directory access and show forbidden error in php如何防止目录访问并在php中显示禁止的错误
【发布时间】:2012-05-27 09:46:18
【问题描述】:
  1. 我是 .htaccess 的新手,我想知道如何使用 .htacces 来防止通过我的文件夹的 url 直接访问,例如localhost/mycart/images/ 或 localhost/mycart/css 应该显示禁止消息。

  2. 目前我已将 index.php 放在我网站的每个文件夹中并回显消息,这是一种好方法吗?

  3. 当我访问像 www.mycart/index.php/css 或 www.mycart/index.php/images 这样的网站时,它显示的网站没有图像和 css 为什么以及如何修复它?

【问题讨论】:

  • #3:你为什么在乎?为什么有人会这样做,然后抱怨呢?发生这种情况的原因是foo.php/whatever 仍然会调用foo.php,但是对于浏览器来说,它看起来就像你在一个名为foo.php 的文件夹中,因此任何相关链接都不起作用。
  • 有什么办法可以预防吗?询问 foo.php/whatever 没有 css 的显示页面只是为了知识!
  • if(!empty($_SERVER['PATH_INFO'])) { header('Location: ' . $_SERVER['SCRIPT_NAME']); exit; }。如果您根本不需要它,您也可以将AcceptPathInfo Off 放入您的.htaccess 文件中

标签: php apache


【解决方案1】:

我用过

# disable directory browsing
Options -Indexes

相反,要启用目录浏览,请使用以下指令:

# enable directory browsing
Options +Indexes

同样,此规则将阻止服务器列出目录内容:

# prevent folder listing
IndexIgnore *

最后,可以使用 IndexIgnore 指令来阻止选择文件类型的显示:

# prevent display of select file types
IndexIgnore *.wmv *.mp4 *.avi *.etc

礼貌来自:Prevent Unauthorized Directory Browsing 来自Stupid HTACCESS Tricks

它还包含许多其他有用的命令,可用于.htaccess 以增强安全性和性能。

【讨论】:

    【解决方案2】:

    您可以简单地将以下内容添加到您的 .htaccess 中

    # Don't listing directory
    Options -Indexes
    ErrorDocument 403 http://www.your-website-home-page.com/
    # Follow symbolic links
    Options +FollowSymLinks
    
    # Default handler
    DirectoryIndex index.php
    

    这将在文件浏览时仅加载 index.php 文件。如果没有找到 index.php 文件,则会发生 403 错误(访问受限)并将用户发送到主页

    【讨论】:

      【解决方案3】:

      如果您想拒绝访问所有文件:

      deny from all
      

      如果你想禁用目录列表:

      IndexIgnore *
      

      【讨论】:

      • 当我使用deny from all 时,我无法打开我网站的任何部分。那么为什么使用这个选项
      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 2011-11-20
      • 2019-05-27
      • 2021-05-17
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多