Talvez você esteja pensando em complicar, apenas negue todo o acesso e depois permita o acesso ao index.php e à própria pasta. Por exemplo:
Order allow,deny
Deny from All
<FilesMatch "^(index\.php)?$">
Allow from All
</FilesMatch>
Se você não quer que o link funcione, você pode substituir a diretiva FilesMatch por Files index.php
. Tenha em mente que isso depende da sua diretiva DirectoryIndex
que arquivo será exibido ao acessar uma pasta sem nome de arquivo.
Edit: Para responder a pergunta em seu comentário, acho que você precisará de um .htaccess mais poderoso usando o mod_rewrite. Você não pode usar Directory e DirectoryMatch em um arquivo .htaccess de acordo com a documentação do Apache. Como a solicitação está sendo negada antes que o RewriteRule possa adicionar uma barra à direita, você não pode adicionar a barra à direita com mod_write.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/index\.php$
RewriteRule ^.*$ - [F]
</IfModule>
<IfModule !mod_rewrite.c>
Order allow,deny
Deny from All
</IfModule>