1

我想重写一个 URL,如:

我的目标: 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]

我该怎么做呢?

4

1 回答 1

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)

于 2012-12-30T18:53:47.543 回答