在htaccess中重复出现RedirectMatch

时间:2013-03-21 17:02:37

标签: regex .htaccess mod-rewrite

免责声明:我对mod_rewrite或regex不太满意。

我的根目录中有以下内容.htaccess:

RedirectMatch 301 ^(.+\.pdf)$ files/$1

我想要实现的是,根文件夹中扩展名为.pdf 的任何文件都将重定向到/files子目录。

问题是这与网站上的任何.pdf匹配,并且在子文件夹中似乎会重现,例如

mydomain.com/some.pdf按预期变为mydomain.com/files/some.pdf

然而:

当我不想重写此网址时,

mydomain.com/sub/some.pdf变为mydomain.com/files/files/files/files/files/files/sub/some.pdf。我假设它遇到一个无限循环但在多次重定向后取消它。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

RedirectMatch 301 ^([^/]+\.pdf)$ files/$1

此处的关键是使用[^/]+代替.+,这样您就不会将/作为模式的一部分。这会将您的模式隔离为仅匹配根目录中的pdf文件。