我想重写一个像:
这样的网址我的目标:
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]
我该怎么做?
答案 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)