重定向与前缀模式匹配的文件和文件夹

时间:2012-08-18 16:44:34

标签: .htaccess mod-rewrite

我正在尝试使用.htaccess文件将所有请求重定向到以4个数字(例如2012)开头的目录中的子文件夹和子文件到另一个目录。

例如,

/results/2005-09-19-xxx/* to /event/2005-09-19-xxx/*

/results/2005-09-20-file.ext to /event/2005-09-20-file.ext 

但不是

/results/anything-else/*

从我看过的文件中我相信我需要使用RewriteCond,然后使用RewriteRule。我一直在努力找到一种方法来匹配最初的4个数字,并仍然在重定向的链接中使用它们。

我花了很多时间试图找到解决这个问题的方法,我们非常感谢任何帮助或建议。谢谢。

2 个答案:

答案 0 :(得分:1)

你真的不需要重写条件,试试这个重写规则:

RewriteRule ^results/([0-9]{4}.*)$ /event/$1 [L,QSA]

答案 1 :(得分:0)

这应该可以解决问题:

RewriteRule ^result/([0-9]{4})-([0-9]{2})-([0-9]{2})(.+)$ event/$1-$2-$3$4 [L]

这种模式是:4个数字短划线2个数字短划线2个数字休息,以一种您可以在以后需要时轻松理解和操作的方式编写。适合该模式的所有内容都将被重写 - 其余内容将按照通常的方式工作

示例:

result/2012-02-02-abcd.ext

适合模式并将被重写为

event/2012-02-02-abcd.ext