2013-03-21 109 views
0

声明:我对mod_rewrite或regex不是很好。htaccess中的重复重定向匹配

我有我的根.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时,我不想在所有重写这个URL。我假设它遇到了无限循环,但在多次重定向后取消了它自己。

你的帮助是非常赞赏。

回答

1

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

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