【问题标题】:make PHP run file when viewing any folder查看任何文件夹时使PHP运行文件
【发布时间】:2011-12-09 14:30:47
【问题描述】:

我知道这一定是 .htaccess 或 php.ini 周围的东西。

如果网站访问者查看 ANY 文件夹,我想自动运行一个脚本,列出其中的文件 (file_read.php)。

但我只希望 file_read.php 位于我的根文件夹中。

有人可以指点我吗?

谢谢。

【问题讨论】:

  • file_read.php如何获取要读取的文件夹名称?

标签: php .htaccess directory


【解决方案1】:

.htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) file_read.php?dirpath=$1

【讨论】:

  • ...或者这可能比我的要好。 +1。
【解决方案2】:

不久前我遇到了类似的问题,并以.htaccess 结束,如下所示:

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}index.php !-f
RewriteCond %{REQUEST_FILENAME}index.html !-f
RewriteRule (.*/) file_read.php?dirpath=/$1 [L]
RewriteRule ^$ file_read.php?dirpath=/ [L]

</IfModule>

一些解释为什么会这样:

  1. RewriteCond %{REQUEST_FILENAME} -d - 使其仅适用于目录
  2. RewriteCond %{REQUEST_FILENAME}index.php !-f - 不要列出包含索引文件的目录
  3. RewriteRule (.*/) file_read.php?dirpath=/$1 - 注意结尾的斜杠,没有它进入 http://server.com/directory(没有尾随斜杠)被重定向到 http://server.com/directory/file_read.php?dirpath=directory 之类的东西,这不是我们想要的。
  4. RewriteRule ^$ file_read.php?dirpath=/ - 在上面的规则中添加斜杠后,目录列表器停止为根目录工作 (http://server.com/) 所以这一行修复了它

【讨论】:

    【解决方案3】:
    RewriteEngine on
    RewriteRule ^(.*)/$ file_read.php?dir=$1 [L]
    

    路径的最后一个字符是/ 的每个请求都会获得file_read.php,并且请求的路径将可用于$_GET['dir'] 中的file_read.php

    【讨论】:

    • there is -d directive -"is directory" 你的解决方案是错误的,因为在 not existing directory 上不会出现 404 错误
    • 我知道,我忘了,你的肯定是更好的答案。
    【解决方案4】:

    一种方法:只需删除任何索引文件(例如 index.php、index.html)并确保 .htaccess 中没有 DirectoryIndex 指令指向文件夹中的任何现有文件。然后,当您查看文件夹时,您将看到该文件夹​​中的所有文件。当然,这并不使用任何 read_file.php 脚本来完成;它只是让目录自己索引。

    另一种方式:正如 DaveRandom 和 Piotr Szymkowski 所展示的,您可以使用 .htaccess 将对所有目录的所有调用路由到 read_file.php 文件,将当前目录路径作为参数传递给该文件。然后,使用 readdir()(参见php manual 了解用法),您可以列出其中的文件。

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      相关资源
      最近更新 更多