当前位置:  开发笔记 > 前端 > 正文

如何同时使用apache mod_rewrite和别名?

如何解决《如何同时使用apachemod_rewrite和别名?》经验,为你挑选了1个好方法。

我在webroot外面有一个目录,用于存储从单独的管理系统上传的图像.图像以以下格式存储:

filepath/writable/images/00/00/23/65/filename-236581.jpg

(webroot是filepath/html)

...例如.这里,236是数据库中图像的ID,文件系统被分成编号目录,以阻止在一个目录中使用100多个inode.

我希望能够从前端Web服务器访问这些,如下所示:

http://(server)/filename-236581.jpg

其中filename是seo优化的字符串,与实际文件的名称相同.

我可以通过mod-rewrite来重写URL,使其包含额外编号的目录,并且我可以获得别名将请求重定向到writable/images目录,但我不能同时执行这两个操作.如果我同时放入alias和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]没有区别.



1> Martin..:

[L]表示最后.

你真正需要使用的是[PT]标志,表示你的重写规则的结果路径应该传递给下一个处理程序,在你的情况下是alias指令.

由于[PT]标签也暗示了[L]标签,因此您不再需要[L].

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有