Image 使用图像/媒体/二进制文件作为目录索引(或图像/媒体的漂亮URL)

Image 使用图像/媒体/二进制文件作为目录索引(或图像/媒体的漂亮URL),image,apache,.htaccess,mod-rewrite,rewrite,Image,Apache,.htaccess,Mod Rewrite,Rewrite,对于大多数web/http服务器,如果路径中指定了目录并包含索引文件,则默认情况下返回名为index.{html,php}的文件 我想知道是否有可能返回图像或其他内容而不是索引文件?e、 g.对于这个目录结构 releases releases/album/ releases/album/covers/ releases/album/covers/front/index.jpeg releases/album/covers/front/index.pdf releases/album/cover

对于大多数web/http服务器,如果路径中指定了目录并包含索引文件,则默认情况下返回名为
index.{html,php}
的文件

我想知道是否有可能返回图像或其他内容而不是索引文件?e、 g.对于这个目录结构

releases
releases/album/
releases/album/covers/
releases/album/covers/front/index.jpeg
releases/album/covers/front/index.pdf
releases/album/covers/front/index.png
releases/album/covers/back/index.jpeg
releases/album/covers/back/index.pdf
releases/album/covers/back/index.png
网址

http://server.org/releases/album/covers/front
将返回
front
文件夹中的
index.jpeg
图像。因此,如果未指定格式,则默认为JPEG文件。然后,URL

http://server.org/releases/album/covers/front/pdf
将返回该文件夹中的
index.pdf
版本,对于

http://server.org/releases/album/covers/front/png
index.png
文件。
back
文件夹同上。你明白了;)

另外,我希望实际的
索引。*
不可访问。因此,这些资源只能通过pretty/directory URL获得

这是一个静态站点,所以我更愿意只使用
htaccess
配置来解决这个问题。不过,我也对服务器端脚本(例如node.js、PHP)解决方案持开放态度


谢谢

假设URL的
相册
部分有所不同,您可以使用以下.htaccess

RewriteEngine on

# Block direct index requests
RewriteCond %{THE_REQUEST} \ /releases/[^/]+/covers/front/((pdf|png)/)?index\.(jpeg|pdf|png)\s [NC]
RewriteRule ^ - [F]

# Resolve pretty URLs
RewriteRule ^(releases/[^/]+/covers/front)/?$ /$1/index.jpeg [NC,L]
RewriteRule ^(releases/[^/]+/covers/front)/(pdf|png)/?$ /$1/$2/index.$2 [NC,L]

我只想为@Ravi Thapliyal的解决方案添加一个更通用/可重用的版本:

RewriteEngine on

# block direct index file image requests in current directory
RewriteCond %{THE_REQUEST} \ ?index\.(jpeg|pdf|png)\s [NC]
RewriteRule ^ - [F]

# Resolve pretty URLs in current directory
# by default return JPEG version
RewriteRule ^/?$ index.jpeg [NC,L]
# accept either jpg or jpeg for JPEG version
RewriteRule ^/?(jpg|jpeg)/?$ index.jpeg [NC,L]
# for other types, return appropriate 
RewriteRule ^/?(pdf|png)/?$ index.$1 [NC,L]
现在,这些重写规则可以放在任何目录中,使该目录成为索引。{jpeg,jpg,png,pdf}图像文件,如原始问题中所述(即具有漂亮的URL)。对于问题中定义的特定目录结构,这意味着将这些规则放置在
releases/album/covers/front/
releases/album/covers/back/
目录中的.htaccess文件中


再次感谢@Ravi Thapliyal,他在回答问题方面做了大量工作。

感谢您的回答,并对迟来的答复表示歉意。它就像一个符咒(我只是把问题简化了,并更新了你的答案来匹配)!但是,有没有办法使这个.htaccess文件更通用/可重用?i、 e.如果这个.htaccess可以直接放在“front”和“back”目录中,而不是修改root.htaccess来引用每个目录,那将更有帮助。我自己也在尝试各种更改,但到目前为止运气不佳:我似乎缺少一些非常基本的东西,这些东西阻止了我的local.htaccess规则的匹配。再次感谢。如果有帮助,请考虑接受答案。新的要求与您原来的问题大不相同,因此我建议您打开一个新问题,并将其链接到评论中。对于延迟接受您的答案,我深表歉意。我并不认为澄清问题的要求有很大的不同,多亏了你的回答,我能够想出一个更通用的解决方案,我将发布。无论如何,你的解决方案肯定是解决方案的90%。再次感谢。