заставить PHP запускать файл при просмотре любой папки - PullRequest
1 голос
/ 18 октября 2011

Я знаю, что это должно быть что-то вроде .htaccess или php.ini.

Если посетитель сайта просматривает папку ANY , я хочу автоматически запустить сценарий с перечислением файлов в нем (file_read.php).

Но я хочу, чтобы файл file_read.php находился в моей корневой папке.

Может кто-нибудь указать мне, пожалуйста?

Спасибо.

Ответы [ 4 ]

7 голосов
/ 18 октября 2011

.htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) file_read.php?dirpath=$1
2 голосов
/ 18 октября 2011

Не так давно у меня была похожая проблема, и я закончил с .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/), поэтому эта строка исправляет его
1 голос
/ 18 октября 2011
RewriteEngine on
RewriteRule ^(.*)/$ file_read.php?dir=$1 [L]

Каждый запрос, где последний символ пути равен /, получает file_read.php, а запрошенный путь будет доступен для file_read.php в $_GET['dir'].

0 голосов
/ 18 октября 2011

Один способ: просто удалите любой индексный файл (например, index.php, index.html) и убедитесь, что у вас нет директивы DirectoryIndex в .htaccess, указывающей на какой-либо существующий файл в папке.Затем при просмотре папки вы увидите все файлы в этой папке.Конечно, для этого не используется никакой скрипт read_file.php;он просто позволяет сам индекс каталога.

Другой способ. Как показали DaveRandom и Piotr Szymkowski, вы можете использовать .htaccess для маршрутизации всех вызовов ко всем каталогам в файл read_file.php, передавая текущий путь к каталогу какаргумент в этот файл.Затем, используя readdir () (см. Руководство по php для использования), вы можете перечислить файлы внутри него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...