Apache只显示某些子文件夹

时间:2016-08-17 18:24:07

标签: apache

我有一个Apache conf,我正在映射根目录外的文件夹:

Alias /salt "/var/cache/salt/master/minions"

<Directory "/var/cache/salt/master/minions">
    Options Indexes MultiViews FollowSymLinks
    Require all granted
</Directory>

现在问题是目录minions中有很多文件夹,我想只显示一个名为“cert”的文件夹。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我无法找到一个好的解决方案,但这就是我做到的。 我写了一个index.php页面,它只显示我需要的文件。它可能不是完美的解决方案,但不得不以某种方式做到这一点。 我还必须在apache conf中更改目录索引。

以下是帮助任何人的代码:

Alias / salt“/ var / cache / salt / master / minions”

<Directory  "/var/cache/salt/master/minions/">
    Options Indexes FollowSymLinks
    Require all granted
    DirectoryIndex index.php
</Directory>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <head>
  <title>Index of /salt</title>
 </head>
 <body>
<?php

function get_string_between($string, $start, $end){
    $string = ' ' . $string;
    $ini = strpos($string, $start);
    if ($ini == 0) return '';
    $ini += strlen($start);
    $len = strpos($string, $end, $ini) - $ini;
    return substr($string, $ini, $len);
}

$dir   = new RecursiveDirectoryIterator(__DIR__);
$flat  = new RecursiveIteratorIterator($dir);
$files = new RegexIterator($flat, '/\.pem$/i');
$relpath = array();
foreach($files as $file) {
    $parsed = get_string_between($file, '/master/minions/', 'ssl_cert.pem');
    array_push($relpath,$parsed);
}
?>
<h1>Index of /salt</h1>
  <table>
   <tr><th valign="top"><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=D;O=A">Description</a></th></tr>
   <tr><th colspan="5"><hr></th></tr>
<?php
foreach ($relpath as &$value) {
    echo "<tr><td valign='top'><img src='/icons/folder.gif' alt='[DIR]'></td><td><a href='$value'>$value</a></td><td align='right'>  - </td><td>&nbsp;</td></tr>";
}
?>
   <tr><th colspan="5"><hr></th></tr>
</table>
<address>Apache/2.4.7 (Ubuntu) Server at 10.102.28.170 Port 90</address>
</body></html>