我在 webroot 之外有一个目录,用于存储从单独的管理系统上传的图像。图像以这种格式存储:
filepath/writable/images/00/00/23/65/filename-236581.jpg
(其中 webroot 是文件路径/html)
...例如。这里,236 是图像在数据库中的 ID,文件系统被分成编号的目录,以防止在一个目录中使用 100 多个 inode。
我希望能够从前端网络服务器访问这些,如下所示:
http://(server)/filename-236581.jpg
其中 filename 是一个 seo 优化的字符串,与实际文件的名称相同。
我可以让 mod-rewrite 重写 URL,使其包含额外编号的目录,我可以让 alias 将请求重定向到 writable/images 目录,但我不能同时做这两个。如果我将别名和 mod_rewrite 指令都放入,它会忽略别名,并且错误日志会抱怨它找不到文件路径/html/uploaded-images。
这是我到目前为止所拥有的:
RewriteRule ^(.*)\/([^\/]*)-([0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/00/00/00/00/$2-$3.$4 [L,NC]
...等等,一直到:
RewriteRule ^(.*)\/([^\/]*)-([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/$3$4/$5$6/$7$8/$9$10/$2-$3$4$5$6$7$8$9$10$11$12.$13 [L,NC]
alias /uploaded-images "filepath/writable/images"
删除 [L] 没有任何区别。