我在webroot外面有一个目录,用于存储从单独的管理系统上传的图像。图像以这种格式存储:
filepath/writable/images/00/00/23/65/filename-236581.jpg
(webroot是filepath / html)
......例如。这里,236是数据库中图像的ID,文件系统被分成编号目录,以阻止在一个目录中使用100多个inode。
我希望能够从前端网络服务器访问这些内容,如下所示:
http://(server)/filename-236581.jpg
其中filename是seo优化的字符串,与实际文件的名称相同。
我可以通过mod-rewrite重写URL以便它包含额外编号的目录,并且我可以获得别名将请求重定向到writable / images目录,但我不能同时执行这两个操作。如果我同时放入别名和mod_rewrite指令,它会忽略别名,错误日志会抱怨它无法找到filepath / 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]没有区别。
答案 0 :(得分:18)
[L]表示最后一次。
你真正需要使用的是[PT]标志,表示你的重写规则的结果路径应该传递给下一个处理程序,在你的情况下是alias指令。
由于[PT]标签也暗示[L]标签,您不再需要[L]。
答案 1 :(得分:1)
在RewriteRule之后你有[L]意味着“最后”
老实说,我相信这只会意味着会忽略更多的RewriteRule行,但可能值得一试。