在.htaccess中,如何使用Regex检测cookie名称的一部分?

时间:2015-07-10 16:31:56

标签: regex wordpress .htaccess cookies

我设置.htaccess文件以防止访问文件夹中的任何内容,除非设置了某个cookie。问题是,cookie名称可能会因某个ID号附加到其末尾而有所不同,我无法控制它。

我设置的cookie可以是(frm_form30,frm_form31等)。

这是我到目前为止的.htaccess代码:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_COOKIE} !^.*\bfrm_form(?:\d*\.)?\d+*.*$ [NC]
RewriteRule .* / [NC,L]

我用这个:

\bfrm_form(?:\d*\.)?\d+

作为将检测以frm_form开头并以两位数字结尾的任何cookie的正则表达式。任何人都可以指出我正确的方向或告诉我,我做错了什么?

如果我使用完整的cookie名称(例如frm_form30),代码就可以工作,所以文件的其余部分 - 我认为 - 没问题。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

要检测两位数字,请使用\bfrm_form\d\d\bfrm_form\d{2}

你的正则表达式匹配任何数字,小数部分与否。

简化表达式并发送A Forbidden标头而不是重定向:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_COOKIE} !\bfrm_form\d\d\b [NC]
RewriteRule .* [F]

答案 1 :(得分:0)

以下是我解决这个问题的方法:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_COOKIE} !^.*frm_form+(?:\d*\.)?\d+.*$ [NC]
RewriteRule .* http://domain.com [NC,L]

如果您认为有更好的方法,请告诉我。谢谢!