2012-02-13 64 views
2

我需要使用mod_rewrite來檢查某個特定模式是否在txt文件中,並且只有在找到它時纔會重定向。我想根據它是否包含映射文件中找到的用戶標識將url重定向到啓動頁面。需要mod_rewrite僅在重寫映射中發現模式時重定向

所有的用戶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

我以前沒有意識到,但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

+2

爲了使它更具可讀性,我們通常會這樣寫:'RewriteCond $ {UserBlockMap:$ 3 | NOT_FOUND}!NOT_FOUND' – regilero 2012-02-13 20:27:20