urlrewriting和mod_auth_token(apache模块)

时间:2012-12-30 18:38:32

标签: mod-rewrite

我想重写一个像:

这样的网址

我的目标: http://monsite.com/my_other_files/55e35373739efc04a34d408c7c28a7b9/50e084f6/my_video.mp4

我真实的道路: http://monsite.com/my_files/55e35373739efc04a34d408c7c28a7b9/50e084f6/my_video.mp4

.htaccess中的代码:

RewriteRule ^my_other_files/([a-zA-z0-9_-]/[a-zA-z0-9_-]/[a-zA-z0-9_-]*)$
   my_files/$1/$2/$3 [QSA,L]

我该怎么做?

1 个答案:

答案 0 :(得分:1)

说实话,你几乎就在那里。

您需要重写规则中的前导/,并且您不允许每个路径组件中包含多个字符。

尝试:

RewriteRule ^/my_other_files/([0-9a-f]+)/([0-9a-f]+)/([a-z0-9_.-]+)$
    /my_files/$1/$2/$3 [QSA,NC,L]

我将[NC]添加到最后,因此它不区分大小写,并将.添加到最后一个组,因此它会匹配my_video.mp4

之类的内容

此外,看起来你的路径组件都是十六进制的,所以我简化了一些。如果这不是我的准确假设,请尝试这样做:

RewriteRule ^/my_other_files/([a-z0-9_-]+)/([a-z0-9_-]+)/([a-z0-9_.-]+)$
    /my_files/$1/$2/$3 [QSA,NC,L]

在这两种情况下,我都添加了一个易读性的换行符;这不应该在你的实际规则中。

替代方法是接受/my_other_files/中的任何内容并将其重定向到/myfiles/,在这种情况下,您可以使用此规则:

RewriteRule ^/my_other_files/(.+)$ /my_files/$1 [QSA,NC,L]

我希望你把这个排序好! :O)