如果在RewriteMap中找到模式,则需要mod_rewrite仅重定向

时间:2012-02-13 17:18:05

标签: apache mod-rewrite redirect url-rewriting

我需要使用mod_rewrite来检查某个模式是否在txt文件中,并且只有在找到它时才会重定向。我想根据它们是否包含在地图文件中找到的用户ID,将URL重定向到启动页面。

所有用户ID都符合相同的模式,因此我匹配该模式并将其提供给我的映射。假设用户ID可能看起来像这样

12ab-34bc-5601

模式匹配和后续重定向工作正常。如果找到匹配项,则会将用户重定向到我的启动页面。但是,如果在地图中找不到匹配项,则会将其重定向到原始请求。即使我使用L标志,这也会创建一个重定向循环。

RewriteEngine on
RewriteMap UserBlockMap txt:/home/username/users.map
RewriteRule <user id pattern> ${UserBlockMap:$3|$1} [R,L,NE]

我有什么办法可以打破这个重定向循环,或者RewriteMap不是我想在这里使用的工具吗?

1 个答案:

答案 0 :(得分:2)

我之前没有意识到,但RewriteRule可以重新启动并检查RewriteCond。我发现的解决方案就是这个。

RewriteCond ${UserBlockMap:$3}  !^$  [NC]
RewriteRule <user id pattern> ${UserBlockMap:$3|$1} [R,L,NE]

基于此博客文章中概述的内容。 http://www.jeremytunnell.com/posts/mod_rewrite-attempting-to-bend-rewritemap-rewritecond-and-rewriterule-to-my-will